当前位置: 首页 > news >正文

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

相关文章:

  • 基于DeepSeek-R1 的RAG智能问答系统开发攻略
  • 数据结构之栈的2种实现方式(顺序栈+链栈,附带C语言完整实现源码)
  • 第一天 UnityShader的结构
  • 对敏捷研发的反思,是否真是灵丹妙药?
  • Linux 文件系统的日志模式与性能影响
  • Springboot整合Netty简单实现1对1聊天(vx小程序服务端)
  • 跨平台IPC通信、嵌入式WebRTC轻量化引擎:解析EasyRTC在ARM/Linux平台的性能突破
  • 深入了解 C# 中的 LINQ:功能、语法与应用解析
  • 【视频】m3u8相关操作
  • FRP安全机制与风险防范
  • 回溯-单词搜索
  • 刘强东突然发声:不该用算法压榨最底层兄弟!东哥,真正的人民企业家
  • 今日行情明日机会——20250321
  • CHM(ConcurrentHashMap)中的 sizeCtl 的作用与值变化详解
  • QT 图表(拆线图,栏状图,饼状图 ,动态图表)
  • 算法系列——有监督学习——5.支持向量机(核方法)
  • Eplan许可分析
  • flutter 专题 九十 四 Flutter开发之基础知识
  • 区间震荡指标
  • JavaWeb之WebSocket
  • 圆桌|如何应对特朗普政府的关税霸凌?一种联合国视角的思考
  • 郭向阳任广东省公安厅分管日常工作副厅长(正厅级)
  • 结婚这件事,年轻人到底怎么想的?
  • 最高法强化涉新就业形态民事案件审判指导:推动出台司法解释
  • IMF前副总裁朱民捐赠1000万元,在复旦设立青云学子基金
  • 历史新高!上海机场一季度营收增至31.72亿元,净利润增34%