Nginx 配置与优化
重启 Nginx 服务
为了安全地重启 Nginx 服务,笔者使用以下命令。该命令将在停止服务后立即重新启动,减少停机时间。
sudo systemctl restart nginx
配置 HTTPS
为了通过 HTTPS 提供服务,首先需要从证书颁发机构(CA)获取 SSL 证书,并配置服务器使用这些证书。笔者在 Nginx 中配置 SSL 的基本步骤如下。
server {
listen 443 ssl
server_name your_domain.com # 将 your_domain.com 替换为您的域名
ssl_certificate /etc/nginx/conf.d/ssl_certificate.crt # 指向您的证书文件
ssl_certificate_key /etc/nginx/conf.d/ssl_private_key.key # 指向您的私钥文件
# 配置支持的 SSL 协议版本
ssl_protocols TLSv1.2 TLSv1.3
# 配置加密套件
ssl_ciphers HIGH:!aNULL:!MD5
# 其他 Nginx 配置...
}
请确保将 your_domain.com
替换为您的实际域名,并正确设置证书和私钥文件的路径。
配置反向代理
在启用 HTTPS 的同时,可能需要配置反向代理,将请求转发到内部服务。以下是一个示例配置,它将所有传入的 HTTPS 请求转发到本地的 20001
端口。
server {
listen 443 ssl
server_name sumingcheng.cn # 将 sumingcheng.cn 替换为您的域名
ssl_certificate /etc/nginx/conf.d/sumingcheng.cn_bundle.crt # 指向您的证书文件
ssl_certificate_key /etc/nginx/conf.d/sumingcheng.cn.key # 指向您的私钥文件
# 配置支持的 SSL 协议版本
ssl_protocols TLSv1.2 TLSv1.3
# 配置加密套件
ssl_ciphers HIGH:!aNULL:!MD5
location / {
proxy_pass http://localhost:20001;
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;
proxy_read_timeout 90;
proxy_connect_timeout 90;
}
# 其他 Nginx 配置...
}
在此配置中,请将 sumingcheng.cn
替换为您的实际域名。proxy_pass
指令用于将请求转发到本地的 20001
端口,确保后端服务在该端口上监听。
反向代理优化
为了提高反向代理的性能和效率,笔者在配置中加入了以下优化参数。
# 关闭代理缓冲,立即转发客户端请求和后端响应
proxy_buffering off
# 启用分块传输编码,允许服务器分块发送动态内容
chunked_transfer_encoding on
# 开启 TCP_NOPUSH,尽可能合并数据包发送,提高网络效率
tcp_nopush on
# 开启 TCP_NODELAY,立即发送小数据包,减少网络延迟
tcp_nodelay on
# 设置保持连接的超时时间,这里设置为 120 秒
keepalive_timeout 120
这些参数可以根据需要放置在 http
、server
或 location
块中进行配置。
注意事项
确保证书和私钥文件的权限正确,防止未经授权的访问。
可以使用 Let's Encrypt 免费获取 SSL 证书,并设置自动更新。
修改配置文件后,使用以下命令检查语法是否正确:
sudo nginx -t
如果 Nginx 无法启动或配置未生效,请查看 /var/log/nginx/error.log
获取更多信息。
定期更新 Nginx 和相关组件,及时应用安全补丁。