nginx运维——配置 SSL 反向代理

要在 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_certificatessl_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: 系统运维