一. Nginx用途简介
Nginx是一个功能强大的Web服务器加反向代理服务器,同时又是邮件服务器等。
在项目使用中,使用最多的三个核心功能是反向代理、负载均衡和静态服务器
二. 配置文件简介
mian #全局配置
worker_processes 1; #Ngix服务器并发处理服务的关键配置,worker_processes值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约。
events{
#nginx工作模式配置,evnets涉及的指标主要影响Nginx服务器与用户的网络连接,常用的设置包括是否开启多worker process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求等。
workder_connections 1024 ; #每个worker process可以同时支持的最大连接数 。
}
http {
#http设置
server #服务器主机配置
...
location {
#路由配置
}
location path{
}
location otherpath{
}
}
server{
location{
}
}
upstream{
#负载均衡配置
}
}
main # 全局配置,对全局生效
├── events # 配置影响 Nginx 服务器或与用户的网络连接
├── http # 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置
│ ├── upstream # 配置后端服务器具体地址,负载均衡配置不可或缺的部分
│ ├── server # 配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块
│ ├── server
proxy_pass http://tomcat : 表示将所有请求转发到tomcats服务器组中配置的某一台服务器上。
upstream模块:配置反向代理服务器组,Nginx会根据配置,将请求分发给组里的某一台服务器。tomcats是服务器组的名称。
max_failes默认为1,某台server允许请求失败的次数,超过最大次数后,在fail_timeout时间内,新的请求将不会分配给这台机器。如果设置为0,Nginx会将这台Server置为永久无效状态。
fail_timout默认为10秒,某台Server达到max_fails次失败请求后,在fail_timeout期间内,nginx会认为这台Server暂时不可用,不会将请求分配给它。
max._conn:限制分配给某台Server处理的最大连接数,超过这个数量,将不会分配新的连接给它。
resolve将server指令配置的域名,指定域名解析服务器。需要在http模块下配置resolve指令,指定域名解析服务。
Nginx负载均衡实现方式“
1). weight轮询:接收到垢请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,nginx会自动将该服务器剔出队列,请求受理情况不会受到任何影响。这种方式下,可以给不同的后端服务器设置一个权重值。
2). ip hash :每个请求按照发起客户端 的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总分访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下seesion共享的问题。
3). fair : 智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少; 结合了前两者的优点的一种调度算法。但是需要注意的是nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块。
4). url_hash : 按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,要使用的话需要安装nginx的has软件包。
2. Nginx配置反向代理,负载均衡其实也是反向代理
upstream tomcats { server 127.0.0.1:9001; server 127.0.0.1:9002; } server { listen 80; server_name www.lianggzone.com; location / { proxy_pass_header Server; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass http://tomcats; } }
Nginx动静分离配置:
Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面。动静分离从目前实现角度来讲分为两种 :
1) 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的文案;
2) 另一种方法就是动态跟静态文件混合在一起发布,通过nginx来分开。
Nginx作为动静分离服务器的相关配置:
server {
listen 80;
server_name 10.110.10.122;
location / {
root html;
proxy_pass http://myserver;
index index.html indexl.htm;
}
location /www/ {
root /data/;
}
location /image/ {
root /data/;
autoindex on;
}
}
│ │ ├── location # server 块可以包含多个 location 块,location 指令用于匹配 uri
│ │ ├── location
│ │ └── ...
│ └── ...
└── ...
原文作者:SHERlocked_93
原文链接:https://www.nginx.org.cn/article/detail/545
转载来源:NGINX开源社区
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
配置文件主要由6部分组成:
1. main : 用于进行nginx全局信息的配置
2. events : 用于nginx工作模式的配置
3. http : 用于进行http协议信息的一些配置
4. server : 用于进行服务器访问信息的配置
5. location : 用于进行访问路由的配置
6. upstream : 用于进行负载均衡的配置
三. 各功能的配置方法:
1. 负载均衡配置方法:
http{
resoler 10.0.0.1;
upstream tomcats{
server 10.110.110.10:8080 weight=2 max_fails=3 fail_timeout=15; #2/6次
server 10.110.110.11:8080 weight=3 max_conns=1000; #3/6次
server 10.110.110.12:8080 weight=1; #1/6次
server example.com resolve;
}
server {
listen 80;
location /{
proxy_pass http://tomcats;
}
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体