本文目录导读:

我来详细介绍Nginx反向代理的配置方法。
基础反向代理配置
最简单的反向代理
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:3000; # 代理到本地的Node.js应用
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_set_header X-Forwarded-Proto $scheme;
}
}
常见配置场景
场景1:代理到不同端口
# 将不同路径代理到不同服务
server {
listen 80;
server_name api.example.com;
# API服务
location /api/ {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
}
# 前端服务
location / {
proxy_pass http://localhost:3000/;
proxy_set_header Host $host;
}
}
场景2:负载均衡
upstream backend_servers {
# 轮询(默认)
server backend1.example.com weight=3; # weight设置权重
server backend2.example.com weight=2;
server backend3.example.com;
# 其他负载策略
# least_conn; # 最少连接
# ip_hash; # IP哈希(会话保持)
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
场景3:WebSocket代理
server {
listen 80;
server_name ws.example.com;
location /ws/ {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400; # 超时时间设置
}
}
高级配置
配置缓存
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m;
server {
listen 80;
server_name example.com;
location / {
proxy_cache my_cache;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
proxy_cache_min_uses 3;
proxy_pass http://localhost:3000;
# 缓存绕过
proxy_cache_bypass $http_pragma;
proxy_cache_bypass $http_authorization;
add_header X-Cache-Status $upstream_cache_status;
}
}
HTTPS反向代理
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://localhost:3000;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Ssl on;
}
}
# HTTP重定向到HTTPS
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
常用配置参数说明
location / {
proxy_pass http://backend;
# 请求头设置
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_set_header X-Forwarded-Proto $scheme;
# 超时设置
proxy_connect_timeout 30s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
# 缓冲区设置
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
proxy_busy_buffers_size 8k;
# 大小限制
client_max_body_size 10m;
}
配置示例:前后端分离部署
server {
listen 80;
server_name www.example.com;
# 静态资源 - 直接由Nginx处理
location /static/ {
alias /app/static/;
expires 7d;
add_header Cache-Control "public, immutable";
}
# 媒体文件
location /uploads/ {
alias /app/uploads/;
expires 30d;
}
# API请求 - 代理到后端
location /api/ {
proxy_pass http://localhost:8080/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# API限流
limit_req zone=api_limit burst=20 nodelay;
limit_req_status 429;
}
# 前端页面 - 代理到Vue/React开发服务器
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header X-Forwarded-For $remote_addr;
# SPA路由支持
try_files $uri $uri/ /index.html;
}
}
配置检查与重载
# 检查配置语法 nginx -t # 重载配置 nginx -s reload # 重启Nginx systemctl restart nginx
配置注意事项
-
路径处理:
proxy_pass末尾的 很重要proxy_pass http://backend;- 完整路径proxy_pass http://backend/;- 去掉匹配的location路径
-
请求头传递:确保正确设置Host和真实IP
-
超时设置:根据应用需求调整超时时间
-
SSL配置:生产环境必须使用HTTPS
这些配置覆盖了大多数反向代理场景,你可以根据具体需求进行调整。
标签: nginx配置
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播