NG
1、常用命令
/apps/svr/nginx-1.17.5/sbin
启动:./nginx,在浏览器输入ip地址,默认80端口
./nginx -s stop
./nginx -s quit
stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。
重新载入Nginx:./nginx -s reload,当修改配置信息conf文件夹中的nginx.conf文件信息时,需要重新载入这些配置时使用此命令
./nginx -s reopen # 重启 Nginx
2、nginx.conf主要由三部分组成
全局块
events块
http块
1、全局块
配置文件从头开始到events块之间的内容,主要设置的是影响nginx服务器整体运行的配置指令。
比如worker_process, 值越大,可以支持的并发处理量也越多,但是还是和服务器的硬件相关
1 2 3 4 5 | #user www www; worker_processes auto; #worker_cpu_affinity auto; worker_rlimit_nofile 65535 ; |
2、events块
events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。
1 2 3 4 | events { use epoll; worker_connections 65535 ; } |
3、HTTP块
包括http全局块,以及多个server块
3.1、HTTP全局块
http 全局块配置的指令包括文件引入、 MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" "$request_time" "$upstream_response_time"' ; access_log logs/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; #keepalive_timeout 0 ; keepalive_timeout 65 ; #gzip on; |
3.2、Server块
1、这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。
2、每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机
3、而每个 server 块也分为全局 server 块,以及可以同时包含多个 location 块。
1 2 3 4 5 6 7 8 9 10 11 12 13 | server { listen 80 ; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; # 表示如果请求路径是/就是用这个location块进行处理 location / { root html; index index.html index.htm; } } |
3.2.1、Server全局块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置
。
3.2.2、location块
1、一个 server 块可以配置多个 location 块。
2、主要作用是根据请求地址路径的匹配,匹配成功进行特定的处理
3、这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。
3、反向代理
3.1、正向代理与反向代理概述
3.1.1、正向代理
正向代理代理的是客户端,需要在客户端配置,我们访问的还是真实的服务器地址。
3.1.2、反向代理
反向代理代理的是服务器端
,客户端不需要任何配置,客户端只需要将请求发送给反向代理服务器即可
,代理服务器将请求分发给真实的服务器,获取数据后将数据转发给你。隐藏了真实服务器,有点像网关。
3.1.3、 区别
1、正向代理代理的是客户端
,需要为每一个客户端都做一个代理服务器,客户端访问的路径是目标服务器
2、反向代理代理的是真实服务器
,客户端不需要做任何的配置,访问的路径是代理服务器
,由代理服务器将请求转发到真实服务器
3.2、配置
1 2 3 4 5 6 7 8 9 10 11 12 | server { # 监听端口 80 即当访问服务器的端口是 80 时,进入这个server块处理 listen 80 ; # server_name当配置了listen时不起作用 server_name localhost; # location后面代表访问路径 当是/ 请求时 代理到tomcat的地址 location / { # 使用 proxy_pass(固定写法)后面跟要代理服务器地址 proxy_pass http: //ip:8080; } } |
当访问Linux的http://192.168.80.102:80这个地址时,由于配置Nginx监听的是80端口,所以会进入这个server块进行处理,然后看你的访问路径,根据location块配置的不同路径进入对应的处理,由于配置了/请求,所以进入/的location处理,然后配置了proxy_pass,所以进行代理到指定的路径。
4、负载均衡
4.1、概述
简单来说就是使用分布式的场景,将原先的一台服务器做成一个集群,然后将请求分发到各个服务器上,原来我们都是直接访问服务器,现在我们可以使用Nginx进行反向代理,然后我们访问Nginx,由Nginx将我们的请求分发到不同的服务器上,以实现负载均衡。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # 在http块中的全局块中配置 # upstream固定写法 后面的myserver可以自定义 upstream myserver{ server ip: 8081 ; server ip: 8082 ; } # server配置 server { # 监听 80 端口 listen 80 ; #location块 location / { # 反向代理到上面的两台服务器 写上自定义的名称 proxy_pass http: //myserver; } } |
4.2、访问规则
4.2.1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除
4.2.2、weight权重
weight 代表权重默认为 1,权重越高被分配的客户端越多
1 2 3 4 5 6 7 8 9 | upstream myserver { server ip: 8081 weight= 1 ; server ip: 8082 weight= 2 ; } server { listen 80 ; location / { proxy_pass http: //myserver; } |
4.2.3、ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题。
当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上。这样,当来自某一个IP的用户在后端Web服务器A上登录后,在访问该站点的其他URL,能保证其访问的还是后端web服务器A。
使用ip_hash指令无法保证后端服务器的负载均衡,可能导致有些后端服务器接收到的请求多,有些后端服务器接收的请求少,而且设置后端服务器权重等方法将不起作用。
原理:

首先通过将ip地址映射成一个hash值,然后将hash值对Tomcat的数量3取模,得到Tomcat的索引0、1、2;
比如:5%3=2,则把这个请求发送到Tomcat3服务器,以此类推;
这样一来,只要用户的IP不发生改变,当前用户的会话就能够一直保持;
nginx的ip_hash算法是取ip地址的前三段数字进行hash映射,如果只有最后一段不一样,也会发送到同一个Tomcat里面
1 2 3 4 5 6 7 8 9 10 11 12 | #配置负载均衡的服务器和端口 upstream myserver { server ip: 8081 ; server ip: 8082 ; ip_hash; } server { listen 80 ; location / { proxy_pass http: //myserver; } } |
4.2.4、fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
1 2 3 4 5 6 7 8 9 10 11 12 | #配置负载均衡的服务器和端口 upstream myserver { server ip: 8081 ; server ip: 8082 ; fair; } server { listen 80 ; location / { proxy_pass http: //myserver; } } |
https://blog.csdn.net/qq_46312987/article/details/118895520
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构