Nginx 配置 HTTPS 與 WSS 完整指南(最新推薦)
Nginx 配置 HTTPS 與 WSS 完整指南
本教程將手把手教你如何為網(wǎng)站配置 HTTPS 加密訪問,并通過反向代理實(shí)現(xiàn)安全的 WebSocket(WSS)通信。以 https://www.zhegepai.cn 域名為例,完整流程約需 30 分鐘完成。
一、前置準(zhǔn)備
1.1 域名注冊(示例)
• 已注冊域名:www.zhegepai.cn
• 確認(rèn)域名已解析到服務(wù)器 IP
• 推薦 DNS 檢查工具:dig www.zhegepai.cn 或 DNS Checker
1.2 SSL 證書獲取
• 免費(fèi)證書:推薦使用 Let’s Encrypt 通過 Certbot 工具自動簽發(fā)
• 商業(yè)證書:阿里云/騰訊云等平臺購買(示例使用)
• 最終需要兩個(gè)文件:
• 證書鏈文件:www.zhegepai.cn.pem
• 私鑰文件:www.zhegepai.cn.key
二、Nginx 核心配置
2.1 文件結(jié)構(gòu)準(zhǔn)備
# 創(chuàng)建證書存放目錄 sudo mkdir -p /etc/nginx/ssl/ # 上傳證書文件到指定位置 sudo cp www.zhegepai.cn.pem /etc/nginx/ssl/www.zhegepai.cn.pem sudo cp www.zhegepai.cn.key /etc/nginx/ssl/www.zhegepai.cn.key
2.2 主配置文件
/etc/nginx/nginx.conf
# 用戶權(quán)限配置
user nginx;
worker_processes auto;
pid /run/nginx.pid;
# 動態(tài)模塊加載
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
# 基礎(chǔ)日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
# 性能優(yōu)化參數(shù)
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
# HTTPS 服務(wù)器配置
server {
listen 443 ssl http2;
server_name www.zhegepai.cn;
root /var/www/EasyTools;
# SSL 證書配置
ssl_certificate /etc/nginx/ssl/www.zhegepai.cn.pem;
ssl_certificate_key /etc/nginx/ssl/www.zhegepai.cn.key;
# 安全協(xié)議配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# WebSocket 代理配置
location /ws {
proxy_pass http://127.0.0.1:8765;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400s;
}
# 安全響應(yīng)頭
add_header Strict-Transport-Security "max-age=31536000" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
}
# HTTP 重定向配置
server {
listen 80;
server_name www.zhegepai.cn;
return 301 https://$host$request_uri;
}
}三、關(guān)鍵配置解析
3.1 HTTPS 強(qiáng)化配置
| 參數(shù) | 作用說明 | 推薦值 |
|---|---|---|
ssl_protocols | 允許的 TLS 協(xié)議版本 | TLSv1.2 TLSv1.3 |
ssl_ciphers | 加密套件白名單 | ECDHE 系列優(yōu)先 |
ssl_session_cache | 會話緩存提升性能 | shared:SSL:10m |
add_header | 添加 HSTS 等安全響應(yīng)頭 | 根據(jù)業(yè)務(wù)需求調(diào)整 |
3.2 WebSocket 反向代理
location /ws {
proxy_pass http://localhost:8765; # 本地 WS 服務(wù)端口
proxy_http_version 1.1; # 必須使用 HTTP/1.1
proxy_set_header Upgrade $http_upgrade; # 協(xié)議升級
proxy_set_header Connection "upgrade"; # 保持長連接
proxy_read_timeout 86400s; # 24小時(shí)超時(shí)防止斷開
}四、部署與測試
4.1 服務(wù)端操作
# 語法檢查 sudo nginx -t # 重載配置 sudo systemctl reload nginx # 查看運(yùn)行狀態(tài) sudo systemctl status nginx
4.2 客戶端測試
Https測試,瀏覽器打開:https://www.zhegepai.cn

WSS測試腳本,創(chuàng)建 test-wss.html :
<!DOCTYPE html>
<html>
<head>
<title>WSS 連接測試</title>
</head>
<body>
<h1 id="status">測試中...</h1>
<script>
const socket = new WebSocket('wss://www.zhegepai.cn/ws');
socket.onopen = () => {
document.getElementById('status').textContent =
'[成功] 連接已建立: ' + socket.url;
};
socket.onerror = (error) => {
document.getElementById('status').textContent =
'[失敗] 連接錯(cuò)誤: ' + error.type;
};
</script>
</body>
</html>本地雙擊瀏覽器直接打開測試:
—

五、常見問題排查
5.1 證書相關(guān)錯(cuò)誤
# 檢查證書路徑權(quán)限 ls -l /etc/nginx/ssl/ # 應(yīng)顯示 -rw-r--r-- 權(quán)限 # 驗(yàn)證證書鏈完整性 openssl verify -CAfile www.zhegepai.cn.pem www.zhegepai.cn.pem
5.2 WebSocket 連接失敗
# 在 location /ws 中添加調(diào)試日志 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; access_log /var/log/nginx/ws-access.log main;
5.3 性能優(yōu)化建議
- 啟用 OCSP Stapling 減少 SSL 握手時(shí)間
- 配置 SSL 會話票據(jù)(tickets)提升復(fù)用率
- 使用
nginx -V確認(rèn)編譯時(shí)啟用了 HTTP/2 模塊
通過本文的配置,您的網(wǎng)站將獲得:
• 全站 HTTPS 加密傳輸
• 安全的 WebSocket 通信
• A+ 等級的 SSL Labs 測試評分
• 防御常見 Web 攻擊的能力
實(shí)際部署時(shí)請根據(jù)業(yè)務(wù)需求調(diào)整超時(shí)時(shí)間、CSP 策略等參數(shù)。建議每 3 個(gè)月檢查 SSL 證書有效期,保持服務(wù)安全穩(wěn)定。
到此這篇關(guān)于Nginx 配置 HTTPS 與 WSS 完整指南的文章就介紹到這了,更多相關(guān)Nginx 配置 HTTPS 與 WSS內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Ubuntu系統(tǒng)下的Nginx服務(wù)器軟件安裝時(shí)的常見錯(cuò)誤解決
這篇文章主要介紹了Ubuntu系統(tǒng)下的Nginx服務(wù)器軟件安裝時(shí)的常見問題解決,包括徹底卸載Nginx的方法介紹,需要的朋友可以參考下2016-03-03
Nginx實(shí)現(xiàn)404頁面的配置方法的兩種方法
在使用Nginx作為Web服務(wù)器時(shí),配置404頁面是一項(xiàng)基本需求,本文介紹了兩種配置404頁面的方法,這兩種方法各有特點(diǎn),可以根據(jù)實(shí)際需求選擇適合的配置方式2024-09-09
Windows環(huán)境下Nginx?服務(wù)器?SSL?證書安裝部署操作過程
這篇文章主要介紹了Windows環(huán)境下Nginx?服務(wù)器?SSL?證書安裝部署,指導(dǎo)您如何在Windows Nginx 服務(wù)器中安裝 SSL 證書,本文給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10
nginx進(jìn)行端口轉(zhuǎn)發(fā)的實(shí)現(xiàn)
本文主要介紹了nginx進(jìn)行端口轉(zhuǎn)發(fā)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
解決Nginx location中配置proxy_pass轉(zhuǎn)發(fā)時(shí)斜線‘/‘導(dǎo)致404問題
這篇文章主要介紹了解決Nginx location中配置proxy_pass轉(zhuǎn)發(fā)時(shí)斜線‘/‘導(dǎo)致404問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05

