Nginx代理本机的443到本机的8080端口

1. 准备工作

确认已生成 IP 的 HTTPS 证书

假设你已通过 mkcert 生成证书(如 192.168.199.191.pem192.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 端口并启用 HTTPS
    listen 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 防火墙

  1. 控制面板 → 系统和安全 → Windows Defender 防火墙 → 高级设置
  2. 入站规则 → 新建规则 → 端口 → 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';

    # 允许携带 Cookie
    add_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 的根证书:

  1. 找到根证书路径:
    mkcert -CAROOT
    # 输出示例:C:\Users\你的用户名\AppData\Local\mkcert
    
  2. rootCA.pem 发送到其他设备,双击安装 → 选择 受信任的根证书颁发机构

总结

通过以上步骤,你的本地 8080 端口服务将通过 Nginx 的 HTTPS 反向代理暴露给局域网,同时解决跨域问题。关键点:
证书路径正确:确保 ssl_certificatessl_certificate_key 路径与实际生成文件一致。
跨域配置灵活:根据业务需求调整 Access-Control-Allow-* 头。
防火墙开放:允许外部设备访问 443 端口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

堕落年代

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值