要在 Nginx 中配置 SSL 反向代理,您需要进行以下步骤:
获取 SSL 证书:首先,您需要获取有效的 SSL 证书。您可以购买一个证书,也可以使用免费的证书,如 Let’s Encrypt。
配置 SSL 证书:将 SSL 证书和私钥文件存储在服务器上,并配置 Nginx 使用这些文件。以下是一个简单的示例配置:
# 监听 80 端口的 HTTP 请求
server {
listen 80;
# 替换为你的域名,多个域名可以用空格分隔(如 server_name example.com www.example.com;)
server_name example.com www.example.com;
# 301 永久重定向到 HTTPS 地址($host 自动匹配当前域名,$request_uri 保留请求路径和参数)
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /path/to/ssl_certificate.crt;
ssl_certificate_key /path/to/ssl_certificate_key.key;
# 497 错误 → 301 永久重定向到 HTTPS
error_page 497 =301 https://$http_host$request_uri;
location / {
root /var/www/example;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /b {
proxy_pass http://backend_server_ip:backend_server_port;
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 https;
}
}
在这个配置中,listen 443 ssl;表示监听 443 端口,并启用 SSL。server_name是您的域名。ssl_certificate和ssl_certificate_key分别指向您的 SSL 证书和私钥文件的路径。
配置反向代理:在location /块内配置您的反向代理。将proxy_pass指令设置为您要代理的目标服务器的地址。您还可以设置其他代理相关的头信息,如proxy_set_header。
启用 SSL 协议设置:可以根据需要配置 SSL 协议和加密套件。以下是一个简单的示例:
ssl_protocols TLSv1.2 TLSv1.3; # 仅启用安全的 TLS 版本
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
在这个示例中,我们启用了 TLS 1.2 和 TLS 1.3,并配置了一组安全的加密套件。
重启 Nginx:完成配置后,确保检查配置文件的语法是否正确,然后重新加载或重启 Nginx 服务。
nginx -t # 检查配置文件语法是否正确
nginx -s reload # 重新加载 Nginx 配置
以上是一个基本的 SSL 反向代理配置示例。根据您的具体需求和环境,可能需要进行进一步的配置调整和安全加固。
Categories:
系统运维