在Nginx中配置SSL卸载(也称为SSL终端)可以让你将SSL加密和解密的任务交给Nginx处理,而不是让后端服务器处理。这样可以减轻后端服务器的负担,并且可以更方便地管理SSL证书。以下是一个基本的配置示例:
安装Nginx: 确保你已经安装了Nginx。如果没有安装,可以使用包管理器进行安装。例如,在Ubuntu上可以使用以下命令:
sudo apt update
sudo apt install nginx
获取SSL证书: 你需要一个SSL证书。可以从Let’s Encrypt免费获取,或者购买一个商业证书。
配置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请求,并将流量代理到后端服务器。测试配置: 在重新加载Nginx之前,测试配置文件是否有语法错误:
sudo nginx -t
重新加载Nginx: 如果配置文件没有问题,重新加载Nginx以应用更改:
sudo systemctl reload nginx
现在,Nginx将处理所有的SSL加密和解密任务,后端服务器将不再需要处理这些任务,从而减轻了它们的负担。