Nginx 反向代理配置详解
概述
使用 Nginx 反向代理实现 HTTPS 访问内网服务(如活字格应用),适用于内网服务器无法直接暴露到公网的场景。
完整配置
server {
listen 443 ssl;
server_name www.hgos.top;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 反向代理到本地端口
location / {
proxy_redirect off;
proxy_pass http://127.0.0.1:8081;
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
}关键配置说明
| 指令 | 说明 |
|---|---|
| proxy_pass | 转发目标地址,指向本地服务端口 |
| proxy_set_header Host | 传递原始域名,后端应用可识别 |
| X-Real-IP | 传递客户端真实 IP |
| X-Forwarded-For | 代理链 IP 记录 |
| Upgrade / Connection | WebSocket 支持,活字格实时推送必须 |
HTTP 自动跳转 HTTPS
server {
listen 80;
server_name www.hgos.top;
return 301 https://$server_name$request_uri;
}多站点反向代理
server {
listen 443 ssl;
server_name app1.hgos.top;
location / { proxy_pass http://127.0.0.1:8081; }
}
server {
listen 443 ssl;
server_name app2.hgos.top;
location / { proxy_pass http://127.0.0.1:8082; }
}注意事项
- 生产环境建议仅开启 TLSv1.2+,提升安全性
- 如果后端是 PHP 应用,需删除原有的 PHP rewrite 规则
- 建议使用 Let's Encrypt 免费证书配合 acme.sh 自动续期
- 活字格必须配置 WebSocket 代理头,否则实时通知失效
暂无评论
快来发表第一条评论吧!