Nginx 配置 HTTPS 与 WSS 完备指南

打印 上一主题 下一主题

主题 1723|帖子 1723|积分 5169

Nginx 配置 HTTPS 与 WSS 完备指南

本教程将手把手教你怎样为网站配置 HTTPS 加密访问,并通过反向署理实现安全的 WebSocket(WSS)通讯。以 https://www.zhegepai.cn 域名为例,完备流程约需 30 分钟完成。

一、前置准备

1.1 域名注册(示例)

• 已注册域名:www.zhegepai.cn
• 确认域名已解析到服务器 IP
• 保举 DNS 检查工具:dig www.zhegepai.cn 或 DNS Checker
1.2 SSL 证书获取

免费证书:保举利用 Let’s Encrypt 通过 Certbot 工具主动签发
商业证书:阿里云/腾讯云等平台购买(示例利用)
• 最终必要两个文件:
• 证书链文件:www.zhegepai.cn.pem
• 私钥文件:www.zhegepai.cn.key

二、Nginx 核心配置

2.1 文件结构准备

  1. # 创建证书存放目录
  2. sudo mkdir -p /etc/nginx/ssl/
  3. # 上传证书文件到指定位置
  4. sudo cp www.zhegepai.cn.pem /etc/nginx/ssl/www.zhegepai.cn.pem
  5. sudo cp www.zhegepai.cn.key /etc/nginx/ssl/www.zhegepai.cn.key
复制代码
2.2 主配置文件 /etc/nginx/nginx.conf

  1. # 用户权限配置
  2. user nginx;
  3. worker_processes auto;
  4. pid /run/nginx.pid;
  5. # 动态模块加载
  6. include /usr/share/nginx/modules/*.conf;
  7. events {
  8.     worker_connections 1024;
  9. }
  10. http {
  11.     # 基础日志格式
  12.     log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  13.                     '$status $body_bytes_sent "$http_referer" '
  14.                     '"$http_user_agent" "$http_x_forwarded_for"';
  15.     access_log  /var/log/nginx/access.log  main;
  16.     # 性能优化参数
  17.     sendfile            on;
  18.     tcp_nopush          on;
  19.     tcp_nodelay         on;
  20.     keepalive_timeout   65;
  21.     # HTTPS 服务器配置
  22.     server {
  23.         listen 443 ssl http2;
  24.         server_name www.zhegepai.cn;
  25.         root /var/www/EasyTools;
  26.         # SSL 证书配置
  27.         ssl_certificate /etc/nginx/ssl/www.zhegepai.cn.pem;
  28.         ssl_certificate_key /etc/nginx/ssl/www.zhegepai.cn.key;
  29.         
  30.         # 安全协议配置
  31.         ssl_protocols TLSv1.2 TLSv1.3;
  32.         ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305;
  33.         ssl_prefer_server_ciphers on;
  34.         ssl_session_cache shared:SSL:10m;
  35.         ssl_session_timeout 10m;
  36.         # WebSocket 代理配置
  37.         location /ws {
  38.             proxy_pass http://127.0.0.1:8765;
  39.             proxy_http_version 1.1;
  40.             proxy_set_header Upgrade $http_upgrade;
  41.             proxy_set_header Connection "upgrade";
  42.             proxy_set_header Host $host;
  43.             proxy_read_timeout 86400s;
  44.         }
  45.         # 安全响应头
  46.         add_header Strict-Transport-Security "max-age=31536000" always;
  47.         add_header X-Content-Type-Options "nosniff" always;
  48.         add_header X-Frame-Options "SAMEORIGIN" always;
  49.     }
  50.     # HTTP 重定向配置
  51.     server {
  52.         listen 80;
  53.         server_name www.zhegepai.cn;
  54.         return 301 https://$host$request_uri;
  55.     }
  56. }
复制代码

三、关键配置解析

3.1 HTTPS 强化配置

参数作用说明保举值ssl_protocols允许的 TLS 协议版本TLSv1.2 TLSv1.3ssl_ciphers加密套件白名单ECDHE 系列优先ssl_session_cache会话缓存提升性能shared:SSL:10madd_header添加 HSTS 等安全相应头根据业务需求调整 3.2 WebSocket 反向署理

  1. location /ws {
  2.     proxy_pass http://localhost:8765; # 本地 WS 服务端口
  3.     proxy_http_version 1.1;          # 必须使用 HTTP/1.1
  4.     proxy_set_header Upgrade $http_upgrade; # 协议升级
  5.     proxy_set_header Connection "upgrade"; # 保持长连接
  6.     proxy_read_timeout 86400s;       # 24小时超时防止断开
  7. }
复制代码

四、摆设与测试

4.1 服务端操作

  1. # 语法检查
  2. sudo nginx -t
  3. # 重载配置
  4. sudo systemctl reload nginx
  5. # 查看运行状态
  6. sudo systemctl status nginx
复制代码
4.2 客户端测试

Https测试,欣赏器打开:https://www.zhegepai.cn

WSS测试脚本,创建 test-wss.html :
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>WSS 连接测试</title>
  5. </head>
  6. <body>
  7.     <h1 id="status">测试中...</h1>
  8.     <script>
  9.         const socket = new WebSocket('wss://www.zhegepai.cn/ws');
  10.         
  11.         socket.onopen = () => {
  12.             document.getElementById('status').textContent =
  13.                 '[成功] 连接已建立: ' + socket.url;
  14.         };
  15.         socket.onerror = (error) => {
  16.             document.getElementById('status').textContent =
  17.                 '[失败] 连接错误: ' + error.type;
  18.         };
  19.     </script>
  20. </body>
  21. </html>
复制代码
当地双击欣赏器直接打开测试:

五、常见标题排查

5.1 证书相关错误

  1. # 检查证书路径权限
  2. ls -l /etc/nginx/ssl/
  3. # 应显示 -rw-r--r-- 权限
  4. # 验证证书链完整性
  5. openssl verify -CAfile www.zhegepai.cn.pem www.zhegepai.cn.pem
复制代码
5.2 WebSocket 连接失败

  1. # 在 location /ws 中添加调试日志
  2. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  3. access_log /var/log/nginx/ws-access.log main;
复制代码
5.3 性能优化发起


  • 启用 OCSP Stapling 淘汰 SSL 握手时间
  • 配置 SSL 会话票据(tickets)提升复用率
  • 利用 nginx -V 确认编译时启用了 HTTP/2 模块

通过本文的配置,您的网站将获得:
• 全站 HTTPS 加密传输
• 安全的 WebSocket 通讯
• A+ 等级的 SSL Labs 测试评分
• 防御常见 Web 攻击的能力
实际摆设时请根据业务需求调整超时时间、CSP 计谋等参数。发起每 3 个月检查 SSL 证书有用期,保持服务安全稳定。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊落一身雪

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表