文章目录
- 四、Nginx配置反向代理
-
- [4.1 反向代理实现一](#4.1 反向代理实现一)
-
- [4.1.1 实现效果](#4.1.1 实现效果)
- [4.1.2 配置示例](#4.1.2 配置示例)
- [4.2 反向代理实现二](#4.2 反向代理实现二)
-
- [4.2.1 应用场景](#4.2.1 应用场景)
- [4.2.2 准备工作](#4.2.2 准备工作)
- [4.2.3 配置示例](#4.2.3 配置示例)
- 五、Nginx配置负载均衡
-
- [5.1 实现效果](#5.1 实现效果)
- [5.2 准备工作](#5.2 准备工作)
- [5.3 upstream指令参数](#5.3 upstream指令参数)
- [5.4 负载均衡基本配置](#5.4 负载均衡基本配置)
- [5.5 负载均衡方式](#5.5 负载均衡方式)
-
- [5.5.1 轮询(默认)](#5.5.1 轮询(默认))
- [5.5.2 weight权重](#5.5.2 weight权重)
- [5.5.3 ip_hash](#5.5.3 ip_hash)
- [5.5.4 least_conn](#5.5.4 least_conn)
- [5.5.5 fair(第三方)](#5.5.5 fair(第三方))
- [5.5.6 url_hash(第三方)](#5.5.6 url_hash(第三方))
- 六、Nginx配置动静分离
-
- [6.1 什么是动静分离?](#6.1 什么是动静分离?)
- [6.2 准备工作](#6.2 准备工作)
- [6.3 具体配置](#6.3 具体配置)
四、Nginx配置反向代理
4.1 反向代理实现一
4.1.1 实现效果
访问 192.168.17.129:80(监听80端口),自动跳转到 http://127.0.0.1:8080。

4.1.2 配置示例
nginx
server {
listen 80;
server_name 192.168.17.129;
location / {
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}
}
4.2 反向代理实现二
4.2.1 应用场景
- 访问
http://127.0.0.1:9001/edu/跳转到127.0.0.1:8080 - 访问
http://127.0.0.1:9001/vod/跳转到127.0.0.1:8081
4.2.2 准备工作
- 部署两台Tomcat服务器,分别占用8080和8081端口。
- 在两台Tomcat的webapps目录下创建edu、vod文件夹,并添加测试页面。
4.2.3 配置示例
nginx
server {
listen 9001;
server_name 127.0.0.1;
# 匹配/edu/路径
location /edu/ {
proxy_pass http://127.0.0.1:8080;
}
# 匹配/vod/路径
location /vod/ {
proxy_pass http://127.0.0.1:8081;
}
}
五、Nginx配置负载均衡
5.1 实现效果
浏览器输入 http://192.168.17.129/edu/a.html,请求将平均分发到8080和8081端口的Tomcat服务器(负载均衡)。
5.2 准备工作
- 部署两台Tomcat服务器(8080、8081端口)。
- 在两台Tomcat的webapps目录下创建edu文件夹,并在其中创建a.html测试页面(页面内容区分两台服务器)。
5.3 upstream指令参数
-
max_conns:限制最大同时连接数(1.11.5版本前仅商业版支持)。
-
slow_start:单位秒,权重在指定时间内从1上升到设定值;不适用hash、随机负载均衡,仅单台server时失效(商业版支持)。
-
down:标记服务器不可用
upstream tomcats { server 192.168.1.173:8080 down; server 192.168.1.174:8080 weight=1; server 192.168.1.175:8080 weight=1; } -
backup:备用服务器,仅当其他服务器不可用时生效;不适用 hash、随机负载均衡
bashupstream tomcats { server 192.168.1.173:8080 backup; server 192.168.1.174:8080 weight=1; server 192.168.1.175:8080 weight=1; } -
max_fails & fail_timeout:max_fails(默认 1)表示失败次数阈值,超过则标记服务器宕机;fail_timeout(默认 10 秒)表示失败重试时间
bashupstream wp { server 10.158.1.10 down; server 10.158.1.20 backup; server 10.158.1.30 max_fails=3 fail_timeout=10s weight=5; keepalive_timeout 30s; keepalive_requests 100; } -
keepalived:保持连接数
bashupstream tomcats { server 192.168.1.173:8080 weight=1; server 192.168.1.174:8080 weight=5; server 192.168.1.175:8080 weight=2; keepalive 32; # 保持的连接数 } server { listen 80; server_name www.tomcats.com; location / { proxy_pass http://tomcats; proxy_http_version 1.1; # 连接协议版本 proxy_set_header Connection ""; # 清空连接请求头 } } -
控制浏览器缓存
bashlocation / { proxy_pass http://tomcats; expires 10s; # 浏览器缓存10秒 # expires @22h30m; # 晚上22:30过期 # expires -1h; # 缓存1小时前失效 # expires epoch; # 不设置缓存 # expires off; # 关闭缓存,由浏览器控制 # expires max; # 最大过期时间 }- 反向代理缓存
bashupstream tomcats { server 192.168.1.173:8080 weight=1; server 192.168.1.174:8080 weight=5; server 192.168.1.175:8080 weight=2; } # 配置缓存目录、共享内存、最大空间、过期时间 proxy_cache_path /usr/local/nginx/upsteam_cache keys_zone=mycache:5m max_size=1g inactive=8h use_temp_path=off; server { listen 80; server_name www.tomcats.com; proxy_cache mycache; # 开启缓存并指定缓存区域 proxy_cache_valid 200 304 8h; # 200/304响应码缓存8小时 location / { proxy_pass http://tomcats; } }
5.4 负载均衡基本配置
bash
http {
# 配置上游服务器集群
upstream tomcats {
server 192.168.17.129:8080;
server 192.168.17.129:8081;
}
server {
listen 80;
server_name 192.168.17.129;
location / {
proxy_pass http://tomcats; # 转发到集群
index index.html index.htm;
}
}
}
5.5 负载均衡方式
5.5.1 轮询(默认)
Nginx自带,客户端请求按时间顺序轮流分配到不同服务器;后端服务器不可用时自动过滤。
bash
upstream my_test_server {
server 192.168.0.100:8080;
server 192.168.0.101:8080;
}
5.5.2 weight权重
Nginx自带,通过weight指定轮询几率(默认1),权重越高,被分配次数越多;适用于后端服务器性能不均衡场景。
bash
upstream my_test_server {
server 192.168.0.100:8080 weight=1;
server 192.168.0.101:8080 weight=2;
server 192.168.0.102:8080 weight=3;
}
5.5.3 ip_hash
Nginx自带,按访问IP的hash结果分配,保证同一用户固定访问一台后端服务器;解决session共享问题。
bash
upstream my_test_server {
ip_hash;
server 192.168.0.100:8080;
server 192.168.0.101:8080;
}
5.5.4 least_conn
Nginx自带,将请求转发给连接数最少的后端服务器;动态适配服务器负载情况。
bash
upstream my_test_server {
least_conn;
server 192.168.0.100:8080;
server 192.168.0.101:8080;
}
5.5.5 fair(第三方)
按服务器响应时间分配,响应时间短的优先;需安装第三方插件。
bash
upstream my_test_server {
fair;
server 192.168.0.100:8080;
server 192.168.0.101:8080;
}
5.5.6 url_hash(第三方)
按URL的hash结果分配,同一URL固定访问一台服务器;配合缓存使用,减少资源重复加载;需安装第三方插件。
bash
upstream my_test_server {
hash $request_uri;
server 192.168.0.100:8080;
server 192.168.0.101:8080;
}
六、Nginx配置动静分离
6.1 什么是动静分离?
将动态请求与静态请求分开处理,并非单纯物理分离动态/静态页面,核心是让Nginx处理静态请求(图片、CSS、JS等),Tomcat处理动态请求(JSP、Servlet等)。
实现方式分为两种:
- 静态资源独立部署:将静态文件放在独立服务器,配置独立域名(主流方案)。
- 混合部署分离:动态与静态文件混合发布,通过Nginx区分转发。
通过location匹配不同后缀名实现转发,结合expires参数设置浏览器缓存过期时间,减少服务器请求压力。expires用于设置资源过期时间,不经常变动的资源建议设置(如3d),经常更新的资源不建议设置。

6.2 准备工作
在Linux系统中创建静态资源目录(如 /opt/static),放入图片、CSS、JS等静态文件。
6.3 具体配置
bash
server {
listen 80;
server_name 192.168.17.129;
# 匹配静态资源后缀
location ~ .*\.(html|htm|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
root /opt/static; # 静态资源目录
expires 3d; # 缓存3天
}
# 匹配动态请求
location ~ .*\.(jsp|do)$ {
proxy_pass http://127.0.0.1:8080; # 转发到Tomcat
}
}
文章结束,喜欢就给个一键三连吧,你的肯定是我最大的动力,点赞上一千我就是脑瘫也出下章