linux

Nginx如何配置SSL卸载

小樊
45
2025-06-27 20:53:28
栏目: 云计算

在Nginx中配置SSL卸载(也称为SSL终端)可以让你将SSL加密和解密的任务交给Nginx处理,而不是让后端服务器处理。这样可以减轻后端服务器的负担,并且可以更方便地管理SSL证书。以下是一个基本的配置示例:

  1. 安装Nginx: 确保你已经安装了Nginx。如果没有安装,可以使用包管理器进行安装。例如,在Ubuntu上可以使用以下命令:

    sudo apt update
    sudo apt install nginx
    
  2. 获取SSL证书: 你需要一个SSL证书。可以从Let’s Encrypt免费获取,或者购买一个商业证书。

  3. 配置Nginx: 编辑Nginx配置文件,通常位于/etc/nginx/nginx.conf/etc/nginx/sites-available/default。以下是一个示例配置:

    server {
        listen 443 ssl;
        server_name example.com www.example.com;
    
        # SSL证书和密钥路径
        ssl_certificate /etc/ssl/certs/example.com.crt;
        ssl_certificate_key /etc/ssl/private/example.com.key;
    
        # SSL协议和密码套件
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
    
        # SSL会话缓存
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
    
        # HSTS(可选)
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    
        # 重定向HTTP到HTTPS(可选)
        listen 80;
        server_name example.com www.example.com;
        return 301 https://$host$request_uri;
    }
    
    server {
        listen 443;
        server_name example.com www.example.com;
    
        # SSL证书和密钥路径
        ssl_certificate /etc/ssl/certs/example.com.crt;
        ssl_certificate_key /etc/ssl/private/example.com.key;
    
        # SSL协议和密码套件
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
    
        # SSL会话缓存
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
    
        # HSTS(可选)
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    
        # 重定向HTTP到HTTPS(可选)
        listen 80;
        server_name example.com www.example.com;
        return 301 https://$host$request_uri;
    
        # 后端服务器配置
        location / {
            proxy_pass http://backend_server;
            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块处理HTTP请求并将其重定向到HTTPS。
    • 第二个server块处理HTTPS请求,并将流量代理到后端服务器。
  4. 测试配置: 在重新加载Nginx之前,测试配置文件是否有语法错误:

    sudo nginx -t
    
  5. 重新加载Nginx: 如果配置文件没有问题,重新加载Nginx以应用更改:

    sudo systemctl reload nginx
    

现在,Nginx将处理所有的SSL加密和解密任务,后端服务器将不再需要处理这些任务,从而减轻了它们的负担。

0
看了该问题的人还看了