Nginx反向代理、负载均衡

nginx.conf基本配置

   server {
       listen 443 ssl;
       server_name yourdomain.com;

       ssl_certificate /path/to/cert.pem;
       ssl_certificate_key /path/to/key.pem;

       location / {
           proxy_pass http://localhost:8080;
           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;
       }
   }

   server {
       listen 80;
       server_name yourdomain.com;

       # 将 HTTP 请求重定向到 HTTPS
       return 301 https://$host$request_uri;
   }

配置解释

listen 443 ssl;:监听 443 端口,并启用 SSL。
server_name yourdomain.com;:指定服务器名称或域名。
ssl_certificate 和 ssl_certificate_key:指定 SSL 证书和私钥的路径。
location / { ... }:定义处理所有以 / 开头的 URL 请求的规则。
proxy_pass http://localhost:8080;:将请求转发给本地的8080端口应用。
proxy_set_header Host $host;:设置 Host 头部为原始请求中的主机名。
proxy_set_header X-Real-IP $remote_addr;:设置 X-Real-IP 头部为客户端的真实 IP 地址。
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:追加 X-Forwarded-For 头部,记录客户端 IP 地址链。
proxy_set_header X-Forwarded-Proto $scheme;:设置 X-Forwarded-Proto 头部为原始请求的协议(HTTP 或 HTTPS)。
server { listen 80; ... }:监听 80 端口,并将 HTTP 请求重定向到 HTTPS。

负载均衡

   upstream tomcat_cluster {
       # 定义负载均衡池
       server localhost:8080 weight=1 max_fails=3 fail_timeout=30s;
       server localhost:8081 weight=1 max_fails=3 fail_timeout=30s;
       server localhost:8082 weight=1 max_fails=3 fail_timeout=30s;
   }

   server {
       listen 443 ssl;
       server_name yourdomain.com;

       ssl_certificate /path/to/cert.pem;
       ssl_certificate_key /path/to/key.pem;

       location / {
           proxy_pass http://tomcat_cluster;
           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;
       }
   }

   server {
       listen 80;
       server_name yourdomain.com;

       # 将 HTTP 请求重定向到 HTTPS
       return 301 https://$host$request_uri;
   }
进阶配置

如果你需要更复杂的负载均衡策略,例如基于会话保持、健康检查等,可以进一步调整配置。以下是几个常见的进阶配置示例:
会话保持(Session Persistence)
使用 ip_hash 指令实现基于客户端 IP 的会话保持:

   upstream tomcat_cluster {
       ip_hash;
       server localhost:8080;
       server localhost:8081;
       server localhost:8082;
   }
健康检查

使用第三方模块如 ngx_http_upstream_check_module 实现健康检查:

   upstream tomcat_cluster {
       server localhost:8080;
       server localhost:8081;
       server localhost:8082;

       check interval=3000 rise=2 fall=5 timeout=1000 type=http;
   }
posted @   fchhk  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示