Nginx详细解说

news/2025/1/15 22:01:36/

1 什么是Nginx

Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。

Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。

其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。

Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。

Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。

2 常见的代理模式

正向代理和反向代理:

 

前面是正向代理,后面是反向代理。

正向VPN: 虚拟专用网

 VPN英文全称:Virtual Private Network(虚拟专用网络)。 翻墙。

正向代理客户端,反向代理服务器。

3 负载均衡

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。

内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。

Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

4 Nginx安装

http://nginx.org/en/download.html下载稳定版本

下载------>解压------>启动。

 

 

 

5 Nginx的核心配置文件 nginx.conf

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况。

引用:Nginx 配置详解 | 菜鸟教程

 6 配置文件的常用配置:

引用:https://www.cnblogs.com/fanzhidongyzby/p/5194895.html

1.#Nginx所用用户和组,window下不指定  
2.user  nobody;  
3.  
4.#工作的子进程数量(通常等于CPU数量或者2倍于CPU)  
5.worker_processes  1;  
6.  
7.#错误日志存放路径  
8.#error_log  logs/error.log;  
9.#error_log  logs/error.log  notice;  
10.error_log  logs/error.log  info;  
11.  
12.#指定pid存放文件  
13.pid        logs/nginx.pid;  
14.  
15.  
16.events {  
17.#使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue,window下不指定。  
18.use epoll;  
19.  
20.#允许最大连接数    
21.worker_connections  1024;  
22.}  
23.  
24.  
25.http {  
26.    #mine.types内定义各文件类型映像  
27.    include       mime.types;  
28.  
29.    default_type  application/octet-stream;  
30.      
31.    #定义日志格式  
32.    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
33.    #                  '$status $body_bytes_sent "$http_referer" '  
34.    #                  '"$http_user_agent" "$http_x_forwarded_for"';  
35.  
36.    #access_log  logs/access.log  main;  
37.  
38.    sendfile        on;  
39.    #tcp_nopush     on;  
40.  
41.    #keepalive_timeout  0;  
42.    keepalive_timeout  65;  
43.  
44.    #gzip  on;  
45.  
46.    #负载均衡集群设置  
47.    upstream tomcats {  
48.        server localhost:8080 weight=1;  
49.        server localhost:9080 weight=1;  
50.          
51.        #根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。  
52.        #同一机器在多网情况下,路由切换,ip可能不同 ---测试的时候可以禁止此项,轮转更明显 
53.        ip_hash;  
54.    }     
55.  
56.    server {  
57.        listen       80;  
58.        server_name  localhost;  
59.  
60.        #charset koi8-r;  
61.  
62.        #access_log  logs/host.access.log  main;  
63.  
64.        location / {  
65.            index  index.shtml;  
66.            proxy_pass  http://tomcats;  
67.            proxy_set_header    X-Real-IP   $remote_addr;  
68.            client_max_body_size    100m;  
69.        }  
70.  
71.#配置动静态分离
72.#location ~ \.(jsp)?$ {
73.         #proxy_pass http://tomcats;#proxy_set_header Host $host;#proxy_set_header X-Real-IP $remote_addr;#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#proxy_connect_timeout       100;#proxy_read_timeout          100;#proxy_send_timeout          100;#}#location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {#  expires 30d;#  root  /usr/local/nginx/html;#}
74.
75.        #error_page  404              /404.html;  
76.  
77.        # redirect server error pages to the static page /50x.html  
78.        #  
79.        error_page   500 502 503 504  /50x.html;  
80.        location = /50x.html {  
81.            root   html;  
82.        }  
83.  
84.        # proxy the PHP scripts to Apache listening on 127.0.0.1:80  
85.        #  
86.        #location ~ \.php$ {  
87.        #    proxy_pass   http://127.0.0.1;  
88.        #}  
89.  
90.        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
91.        #  
92.        #location ~ \.php$ {  
93.        #    root           html;  
94.        #    fastcgi_pass   127.0.0.1:9000;  
95.        #    fastcgi_index  index.php;  
96.        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  
97.        #    include        fastcgi_params;  
98.        #}  
99.  
100.        # deny access to .htaccess files, if Apache's document root  
101.        # concurs with nginx's one  
102.        #  
103.        #location ~ /\.ht {  
104.        #    deny  all;  
105.        #}  
106.    }  
107.  
108.  
109.    # another virtual host using mix of IP-, name-, and port-based configuration  
110.    #  
111.    #server {  
112.    #    listen       8000;  
113.    #    listen       somename:8080;  
114.    #    server_name  somename  alias  another.alias;  
115.  
116.    #    location / {  
117.    #        root   html;  
118.    #        index  index.html index.htm;  
119.    #    }  
120.    #}  
121.  
122.  
123.    # HTTPS server  
124.    #  
125.    #server {  
126.    #    listen       443;  
127.    #    server_name  localhost;  
128.  
129.    #    ssl                  on;  
130.    #    ssl_certificate      cert.pem;  
131.    #    ssl_certificate_key  cert.key;  
132.  
133.    #    ssl_session_timeout  5m;  
134.  
135.    #    ssl_protocols  SSLv2 SSLv3 TLSv1;  
136.    #    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;  
137.    #    ssl_prefer_server_ciphers   on;  
138.    #    location / {  
139.    #        root   html;  
140.    #        index  index.html index.htm;  
141.    #    }  
142.    #}  
143.  
144.}  

引用:(238条消息) linux+nginx+tomcat集群-简单配置文件_deng-bb的博客-CSDN博客

linux+nginx+tomcat集群-简单配置文件

测试:

nginx+Tomcat的负载均衡配置_nginx配tomcat负载_采蘑菇的院长的博客-CSDN博客

上面链接能用

@RestController@Slf4jpublic class HelloController {@GetMapping("/hello")public String hello(){log.debug("我是"+ ServiceConfig.serverPort);return "好好学习"+ServiceConfig.serverPort;}}@Configurationpublic class ServiceConfig implements ApplicationListener<WebServerInitializedEvent> {@Overridepublic void onApplicationEvent(WebServerInitializedEvent event) {// 项目启动获取启动的端口号ServiceConfig.serverPort = event.getWebServer().getPort();}/*** 当前服务使用的端口号*/public static int serverPort;}

引用:

https://www.cnblogs.com/jiangwangxiang/p/8481661.html

启动2个Tomcat

https://blog.csdn.net/rosejeck/article/details/86149981

 


http://www.ppmy.cn/news/119772.html

相关文章

话费电费中控搭建,api接口h5,公众号,小程序app

应用场景&#xff1a; 1、传统的虚拟商品分销&#xff0c;如话费、水电费、油卡费、游戏点卡、视频会员、各类虚拟电子券的分销 2、虚拟商品对接电商平台的销售&#xff0c;如对接淘宝、拼多多等平台做虚拟商品相关的销售&#xff0c;譬如&#xff1a;话费、电费、视频会员、电…

RTD2556/RTD2556T,支持输入HDMI,DP,输出LVDS,EDP,2.5K分辨率

1.工作电压3.3V& 1.1V &2.5V , LQFP156P,22MM*16MM 2.RTD2556T支持FRC/OD等功能&#xff0c;可以180度翻转画面 3.配8MbitSPI NOR FLASH 4.有OSD功能&#xff0c;16色&#xff08;24bit&#xff09;&#xff0c;可支持旋转90/180/270 5.HDMI1.4 &DP1.1 & H…

SDB628

SDB628是一款固定频率&#xff0c;电流模式升压变换器&#xff0c;高达1.2MHz的工作频率使得外围电感电容可以选择更小的规格。内置软启动功能减小了启动冲击电流。轻载时自动切换至PFM模式。SDB628 包含了输入欠压锁定&#xff0c;电流限制以及过热保护功能。小尺寸的封装给PC…

aptx android8,支持aptxHD和LDAC!安卓8.0蓝牙音质大爆发

安卓8.0“奥利奥”本周正式推送&#xff0c;Nexus和Pixel手机已经率先升级。 特性方面&#xff0c;主要包括应用启动速度比Android 7.0快2倍&#xff0c;后台续航监控也更加强大(最大化限制不常用后台应用的活跃度)、安全性提升、画中画、通知分组(Notification Dots&#xff0…

atom d525 android x86,X86-D525固件

这是X86-D525固件&#xff0c;是一个iPhone IOS固件下载工具&#xff0c;拥有苹果iPhone全系列产品说有的新旧版本的固件&#xff0c;并简单介绍了每个固件的版本和特征&#xff0c;可以将您需要的固件下载到电脑上&#xff0c;省去了去网上找IOS固件的麻烦过程。 软件使用 1、…

[RK3568 Android12] HDMI 输出

1:RK3568相关原理图 2:HDMI相关调试,信息查看接口 rk3568_r:/sys/devices/platform/display-subsystem/drm/card0/card0-HDMI-A-1 # ls -al total 0 drwxr-xr-x 3 root root 0 2017-08-04 09:00 . drwxr-xr-x 6 root root 0 2017-08-04 09:00 .. lrwxrwxrwx…

LCD9648驱动

main.c内容 #include "reg51.h" #include "LCD9648.h" #include "stdio.h"typedef unsigned int u16; unsigned char seg_buf[10]; unsigned char seg_string[10]; void main() {LCD_Init();Clear();while(1){sprintf(seg_string," %02d…

hi3559a100解码

这个可以参考&#xff1a; http://bbs.ebaina.com/thread-37986-1-1.html 海思3531获取多个摄像头在整个屏幕的画面 讲解&#xff1a;https://blog.csdn.net/yinsui1839/article/details/80446319 代码&#xff1a; https://download.csdn.net/download/yinsui1839/1043659…