GeoServer遇Nginx代理跳转404?改这两个配置轻松搞定

2026-08-09 开发技术 3 次阅读 0 次点赞
本文介绍了GeoServer部署后通过Nginx代理访问时出现302重定向至80端口并报404错误的解决方案。问题源于GeoServer未感知代理地址,导致生成错误的重定向URL。解决方式有两种:若只需访问GeoServer发布的服务,可在全局设置或global.xml中配置proxyBaseUrl为代理后的地址;若需完整访问Web管理界面,则需修改Nginx配置,添加Host、X-Forwarded-*等请求头设置,并重载Nginx即可正常访问。

问题描述

将GeoServer部署到服务器上,在本地通过地址 http://172.188.23.111:8080/geoserver/ 直接访问和登录,一切正常。但是使用Nginx代理后,通过 http://172.188.23.111:18080/geoserver/ 访问代理后的地址,会先302重定向到 http://172.188.23.111/geoserver/web/?0 ,然后报404 Not Found错误。

GeoServer被302重定向到80端口

GeoServer被nginx代理后返回404错误

软件版本和相关配置

软件版本

  • JDK: 17.0.10
  • GeoServer: 2.28.4
  • Nginx:1.30.4

nginx配置

    server {
        listen       18080;
        server_name  localhost;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
		
	# 添加GeoServer代理配置
        location /geoserver/ {
            proxy_pass http://127.0.0.1:8080/geoserver/;
            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;
            
            # WebSocket支持(如果需要)
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            
            # 超时设置
            proxy_connect_timeout 60s;
            proxy_send_timeout 60s;
            proxy_read_timeout 60s;
        }

解决方法

1、如果只需要GeoServer发布的服务可以通过代理后的地址进行访问,可以直接通过GeoServer Web界面进行修改或直接编辑配置文件。 使用下面任意一个方法修改好后,在GeoServer Web管理页面图层预览中打开的服务地址就是代理后的地址,示例:http://172.188.23.111:18080/geoserver/tiger/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=tiger%3Agiant_polygon&outputFormat=application%2Fjson&maxFeatures=50 。

方法一: 打开 http://172.188.23.111:8080/geoserver/ ,使用管理员帐号密码登录。打开设置下面的全局设置,在Proxy Base URL中填写 http://172.188.23.111:18080/geoserver 即可。

GeoServer全局设置

方法二: 如果你无法访问web页面,可以编辑文件 %GEOSERVER_DATA_DIR%\global.xml,在文件里配置 proxyBaseUrl 为 http://172.188.23.111:18080/geoserver/,重启GeoServer即可解决。配置参考:

<global>
  <settings>
    <proxyBaseUrl>http://172.188.23.111:18080/geoserver</proxyBaseUrl>
  </settings>
</global>

GeoServer 404错误解决方法

2、如果你需要把整个 GeoServer web管理页面通过nginx代理访问,把nginx配置改为以下配置即可。

        # 添加GeoServer代理配置
        location /geoserver/ {
            proxy_pass http://127.0.0.1:8080/geoserver/;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Port $server_port;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Real-IP $remote_addr;


            
            # WebSocket支持(如果需要)
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            
            # 超时设置
            proxy_connect_timeout 60s;
            proxy_send_timeout 60s;
            proxy_read_timeout 60s;
        }

然后重载以下nginx:

nginx -t
nginx -s reload

这样,就可以使用nginx代理后的地址直接访问GeoServer Web管理界面了。经过测试,可以正常访问和登录。

访问地址:http://172.188.23.111:18080/geoserver/

最后更新于2小时前
本文由人工编写,AI优化,转载请注明原文地址: GeoServer遇Nginx代理跳转404?改这两个配置轻松搞定

评论 (0)

登录 后发表评论

暂无评论,快来发表第一条评论吧!