1. 準備工作
確認已生成 IP 的 HTTPS 證書
假設你已通過 mkcert
生成證書(如 192.168.199.191.pem
和 192.168.199.191-key.pem
),并已安裝 CA 證書(運行過 mkcert -install
)。
Nginx 安裝
? 若未安裝 Nginx,從官網下載 Windows 版:
https://nginx.org/en/download.html
? 解壓到任意目錄(如 D:\nginx
)。
2. 配置 Nginx 反向代理
編輯配置文件
打開 conf/nginx.conf
,在 http
塊內添加以下配置:
server {# 監聽 443 端口并啟用 HTTPSlisten 443 ssl;server_name 192.168.199.191; # 替換為你的局域網 IP# 證書路徑(根據實際路徑修改)ssl_certificate D:/mkcert/192.168.199.191.pem;ssl_certificate_key D:/mkcert/192.168.199.191-key.pem;# 解決跨域問題(按需調整)add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';# 反向代理到本地 8080 端口location / {proxy_pass http://localhost:8080;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;}
}# 強制 HTTP 跳轉到 HTTPS(可選)
server {listen 80;server_name 192.168.199.191;return 301 https://$host$request_uri;
}
關鍵配置說明
配置項 | 作用 |
---|---|
listen 443 ssl | 監聽 HTTPS 端口(需證書) |
ssl_certificate | 證書文件路徑(.pem 文件) |
add_header | 解決跨域問題(* 允許所有來源,生產環境建議指定域名) |
proxy_pass | 將請求轉發到本地 8080 端口 |
proxy_set_header | 傳遞客戶端真實 IP 和協議信息 |
3. 啟動 Nginx 并測試
啟動 Nginx
# 進入 Nginx 目錄
cd D:\nginx# 啟動(無報錯即成功)
start nginx
驗證配置
# 檢查配置語法
nginx -t# 重新加載配置(修改后執行)
nginx -s reload
4. 防火墻與局域網訪問
開放 443 端口
? Windows 防火墻:
- 控制面板 → 系統和安全 → Windows Defender 防火墻 → 高級設置
- 入站規則 → 新建規則 → 端口 → TCP 443 → 允許連接 → 完成。
局域網設備訪問
? 其他設備瀏覽器訪問:
https://192.168.199.191
? 若設備提示證書不安全:需將 mkcert 的根證書(rootCA.pem
)安裝到設備的信任列表(方法見下文)。
5. 跨域問題深度處理
如果后端服務有復雜跨域需求(如攜帶 Cookie),需細化配置:
location / {# 允許的請求來源(精確匹配)add_header 'Access-Control-Allow-Origin' 'https://your-domain.com';# 允許的請求方法add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';# 允許的請求頭add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type';# 允許攜帶 Cookieadd_header 'Access-Control-Allow-Credentials' 'true';# 預檢請求緩存時間add_header 'Access-Control-Max-Age' 1728000;# 處理 OPTIONS 預檢請求if ($request_method = 'OPTIONS') {return 204;}proxy_pass http://localhost:8080;# 其他 proxy 配置...
}
6. 其他設備信任證書
若局域網設備訪問 HTTPS 時提示證書不安全,需手動安裝 mkcert 的根證書:
- 找到根證書路徑:
mkcert -CAROOT # 輸出示例:C:\Users\你的用戶名\AppData\Local\mkcert
- 將
rootCA.pem
發送到其他設備,雙擊安裝 → 選擇 受信任的根證書頒發機構。
總結
通過以上步驟,你的本地 8080
端口服務將通過 Nginx 的 HTTPS 反向代理暴露給局域網,同時解決跨域問題。關鍵點:
? 證書路徑正確:確保 ssl_certificate
和 ssl_certificate_key
路徑與實際生成文件一致。
? 跨域配置靈活:根據業務需求調整 Access-Control-Allow-*
頭。
? 防火墻開放:允許外部設備訪問 443 端口。