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 端口。