我在 Windows Server 服务器 IIS 网站管理器上安装了两套点晴MIS系统,分别跑在8080和8081端口。
现在前端要对接接口,总不能让人家写两个后端地址吧?而且两个网站怎么分摊流量啊?
还有网站图片、前端页面,放IIS里加载巨慢,听说Nginx能搞定,可我看配置文件全是懵的。
这反向代理、负载均衡到底是啥?小白管理员该怎么快速上手啊?
相信很多第一次做点晴MIS系统项目部署的同学都有这个困惑。
Nginx作为后端开发必备的运维工具,看着配置项多,其实核心功能就那几个。
今天咱们用大白话讲透,看完你也能配出能直接用的反向代理和负载均衡。
先讲个前台小姐姐的类比
把Nginx想象成公司的前台接待,所有外来请求,都先经过前台这一关。
反向代理是什么?
有人来找技术部办事,前台不会告诉他技术部在几楼几号房间,直接把人领过去。
对外只暴露前台这一个入口,后端部门的地址、数量全藏起来,既安全又统一。
对应到项目里:用户只访问域名,Nginx负责把请求转到对应的后端服务,后端真实的IP和端口完全不对外暴露。
负载均衡是什么?
技术部开了两个办事窗口,都能处理同样的业务。
前台不会把所有人都塞到1号窗口,而是按顺序均匀分配,两个窗口一起干活。
对应到项目里:多个后端实例同时运行,Nginx把请求分摊过去,既提升了整体处理能力,又不会因为一个实例挂掉导致全站不可用。
静态资源托管是什么?
有人来要公司宣传册、办事表单这些固定资料,前台直接从抽屉里拿给你,不用再跑去找技术部。
对应到项目里:HTML页面、图片、CSS、JS这些固定文件,直接交给Nginx返回,不用走后端服务,速度快还能减轻后端压力。
一个Nginx,同时干了入口转发、流量分摊、静态文件返回三件事,这就是它为啥能成为部署标配。
核心用法:3套配置直接抄
Nginx的核心配置都在nginx.conf文件里,新手只需要改http模块内的内容就行。
下面三套配置,分别对应三个核心功能,照着改地址和路径就能用。
1. 反向代理后端项目
最基础的用法:用一个域名,把所有的请求,转发到后端IIS服务网站。
server {
listen 80; # 监听80端口,默认HTTP访问端口
server_name oa.yourdomain.com; # 你的域名或服务器公网IP
# 所有的请求,都转发给后端
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
# 超时时间优化
proxy_connect_timeout 120s;
proxy_read_timeout 120s;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme; # 传递原始协议(http/https)
proxy_set_header X-Forwarded-Host $host; # 传递原始域名
proxy_set_header X-Forwarded-Port $server_port; # 传递原始端口
# 新增:缓冲区控制
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
proxy_busy_buffers_size 8k;
# 新增:压缩传输
gzip on;
gzip_types text/plain text/css application/json application/javascript;
}
}
配完之后,用户访问oa.yourdomain.com,Nginx就会自动转到后端127.0.0.1:8080接口,前端完全不用关心后端真实地址。
2. 多实例负载均衡
如果后端启了多个网站实例,加个upstream就能实现负载均衡,默认轮询分配请求。
# 定义后端服务器组,名字可自定义
upstream backend_app {
server 127.0.0.1:8080; # 第一个后端网站实例
server 127.0.0.1:8081; # 第二个后端网站实例
}
server {
listen 80;
server_name oa.yourdomain.com;
location / {
# 转发到服务器组,自动实现负载均衡
proxy_pass http://backend_app/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}
}
默认是轮询模式,两个实例一人处理一个请求。
想让配置更高的服务器多扛流量,在地址后面加weight=2,就会按权重比例分配。
3. 静态资源托管
把前端页面、图片这些固定文件放服务器上,交给Nginx直接返回,速度比走后端快好几倍。
server {
listen 80;
server_name oa.yourdomain.com;
# 缓存静态资源:所有/images开头的请求,直接读取本地文件
location ~* \.(jpg|jpeg|png|gif|ico|css|js|htm|html)$ {
# 添加代理指令
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
# 缓存设置
expires 15d;
add_header Cache-Control "public";
access_log off;
}
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
# 超时时间优化
proxy_connect_timeout 120s; # 从360s降为120s
proxy_read_timeout 120s; # 从360s降为120s
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme; # 传递原始协议(http/https)
proxy_set_header X-Forwarded-Host $host; # 传递原始域名
proxy_set_header X-Forwarded-Port $server_port; # 传递原始端口
# 新增:缓冲区控制
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
proxy_busy_buffers_size 8k;
# 新增:压缩传输
gzip on;
gzip_types text/plain text/css application/json application/javascript;
}
}
配完之后,访问oa.yourdomain.com/mis/images/goods.jpg,Nginx会直接去本地目录找图片返回,完全不占用后端资源。
3个新手必踩的坑
坑一:proxy_pass末尾的斜杠,加错就全404
这是新手最高发的坑,没有之一。
proxy_pass http://127.0.0.1:8080 和 http://127.0.0.1:8080/ 只差一个斜杠,转发结果完全不一样。
同样访问/api/user/list:
没加斜杠:转发到后端是/api/user/list,保留了前缀加了斜杠:转发到后端是/user/list,把/api前缀替换掉了很多人配完接口全404,查半天就是这个斜杠的问题。
正确做法:先确认后端接口路径要不要前缀,配完一定要用工具测一遍,别想当然。
坑二:负载均衡不做故障转移
很多人配完两个服务器地址就觉得完事了。
万一其中一个实例挂了,Nginx还是会往上面发请求,结果一半用户请求报错,还找不到原因。
正确做法:给每个server节点加上失败重试配置:
server 127.0.0.1:8080 max_fails=2 fail_timeout=30s;
意思是30秒内失败2次,就暂时认为这个节点不可用,接下来30秒不再往上面发请求,自动跳过坏节点。
坑三:静态资源路径配错,404/403满天飞
新手配静态资源,经常要么404找不到文件,要么403没权限。
常见原因两个:一是clicksun路径写错,目录层级对不上;二是Windows服务器上Nginx没有文件目录的读取权限。
正确做法:
先用root指令,路径写到静态资源的上级目录,别把文件名写进去给服务器上的静态文件目录加上读取权限,别随便用root用户乱放文件静态资源一定要加缓存过期时间,既能提速又能减轻服务器压力 总结一下
今天把Nginx最常用的三个核心功能都讲透了。
核心作用:
反向代理做统一入口、隐藏后端;负载均衡分摊流量、提升可用性;静态资源托管加速访问、减轻后端压力。
核心配置:
一套反向代理、一套负载均衡、一套静态资源托管,基本能覆盖90%的中小项目部署需求。
三个必避坑:
注意proxy_pass的斜杠、给负载均衡加故障转移、静态资源对齐路径加权限。
九层之台,起于累土。
每一个看似基础的运维技能,都是后端成长路上的必经之路。慢慢来,你也能一步步吃透。
该文章在 2026/9/3 12:44:22 编辑过