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;
}
标签:负载,set,ssl,header,server,Nginx,反向,proxy,localhost
From: https://www.cnblogs.com/fchhk-blog/p/18636508