Nginx反向代理ArcGIS Portal登录端口缺失致404问题求助
解决ArcGIS Portal反向代理认证重定向缺端口的问题
问题根源
ArcGIS Portal生成重定向URL时,默认使用后端自身的443端口,未感知到外部代理的8054端口,导致跳转请求缺失端口直接返回404。需要通过Nginx配置让后端服务识别正确的外部访问端口与协议。
具体修改方案
1. 调整8054端口的Nginx配置文件
在代理的location块中添加关键请求头,强制后端基于外部端口生成URL:
server { listen 8054; server_name 你的外网域名或IP; location / { proxy_pass https://你的内部Portal服务器地址; # 替换为实际内部集群/单服务器地址 # 核心配置:传递带端口的Host头 proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; # 兜底修正:如果后端返回内部443端口的重定向,直接替换为外部8054端口 proxy_redirect https://内部Portal域名/ http://$host:$server_port/; proxy_redirect https://内部Portal域名:443/ http://$host:$server_port/; } }
proxy_set_header Host $host:$server_port:让后端获取包含8054端口的Host信息,生成的重定向URL会自动带上该端口。proxy_redirect:针对后端硬编码内部地址的情况,直接替换重定向目标为外部代理地址。
2. 检查全局Nginx配置
确保全局配置中proxy_set_header Host的默认设置不会覆盖端口配置文件中的自定义规则(server块配置优先级高于全局)。
3. 验证配置并重启服务
sudo nginx -t sudo systemctl restart nginx
额外提示
如果外部访问采用HTTPS协议(8054为SSL端口),需将proxy_redirect中的http://替换为https://,同时为Nginx配置对应SSL证书。另外,也可直接在ArcGIS Portal管理界面设置webContextURL,填入外部代理的完整地址(如http://你的外网地址:8054/arcgis),从根源上让Portal生成正确的URL。
内容的提问来源于stack exchange,提问作者Kzone
相关产品推荐
相关产品推荐

