首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Nginx 代理服务中引用的非代理IP如何实现代理

Nginx 代理服务中引用的非代理IP如何实现代理

作者头像
用户11690639
发布2026-06-18 08:14:28
发布2026-06-18 08:14:28
750
举报

背景

用Nginx 做了代理Geoserver的服务,但该服务引用的js、css 引用的路径为被代理的IP(非代理后的IP),导致服务无法访问。eg:Nginx IP 为A, 代理的服务IP为B,当客户端通过http://A:8080/service=wms?version=1&param=2, 服务wms中引用了js、css,而js 、css 通过F12查看加载路径非A代理下的路径,显示为:http://b:8090/geoserver/openlayers3/ol.css ,因此调用服务wms由于缺失文件,导致无法正常显示。

解决方案

想解决这个问题,有两思路如下所示:

  • 能否修改A服务器服务,让其文件引用路径改为代理路径,这种思路不太好实现,原因:1,如果引用的文件过多,所有都得改一遍,工作量大;原因2,如果引用的是第三方组件的服务,改都找不到地儿。
  • Nginx是否有相应配置可以将路径改为代理路径?这个思路解决了我的问题,具体解决如下所示:
代码语言:javascript
复制
server {
    listen 80;  # 代理端口(对外暴露的端口)
    server_name 192.168.1.100;  # 代理 IP 或域名(对外提供服务的地址)

    # 转发所有 GeoServer 请求到本机 GeoServer(默认端口 8080)
    location /geoserver/ {
        # 转发目标:GeoServer 本机地址(如果 GeoServer 部署在其他机器,替换为对应 IP:端口)
        proxy_pass http://127.0.0.1:8080/geoserver/;

        # 关键:传递代理信息给 GeoServer
        proxy_set_header Host $host:$server_port;  # 传递代理的 Host 和端口(让 GeoServer 知道对外的地址)
        proxy_set_header X-Real-IP $remote_addr;  # 传递客户端真实 IP(可选,用于日志)
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 传递转发链(可选)
        proxy_set_header X-Forwarded-Proto $scheme;  # 传递协议(http/https,若用 HTTPS 需配置)

        # 其他优化配置(可选)
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        send_timeout 600;
    }
}
  • 说明:proxy_set_header Host host:server_port 是核心 ——GeoServer 会优先使用该 Host 头生成 WMS 服务地址,而非本机 127.0.0.1:8080。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 解决方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档