如何正确配置Nginx反向代理自定义端口的GeoServer?
问题:GeoServer反向代理后重定向丢失端口
我在同一服务器的独立Docker容器中部署GeoServer和Spring Boot服务,通过Nginx反向代理对外提供服务。由于80、443端口不可用,选用10443作为HTTPS端口。Spring Boot服务运行正常,但GeoServer访问时出现重定向丢失端口的问题:访问https://example.com:10443/geoserver会先重定向至带端口的index.html,随后跳转至不含10443端口的https://example.com/geoserver/web/?0。
我的Nginx配置
location /geoserver { proxy_pass http://geoserver: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-Client-Verify SUCCESS; proxy_set_header X-Client-DN $ssl_client_s_dn; proxy_set_header X-SSL-Subject $ssl_client_s_dn; proxy_set_header X-SSL-Issuer $ssl_client_i_dn; proxy_redirect off; }
docker-compose.yml配置
version: "3.1" services: nginx: container_name: nginx image: nginx restart: always ports: - 10443:443 volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf - ./nginx/conf.d:/etc/nginx/conf.d - ./nginx/cert:/etc/nginx/cert - ./nginx/www:/www - /etc/localtime:/etc/localtime:ro geoserver: container_name: geoserver image: kartoza/geoserver:2.21.1 environment: DB_BACKEND: POSTGRES HOST: postgis POSTGRES_PORT: 5432 POSTGRES_DB: pgis POSTGRES_USER: postgis POSTGRES_PASS: ******** GEOSERVER_ADMIN_USER: admin GEOSERVER_ADMIN_PASSWORD: ******** GEOSERVER_DATA_DIR: /opt/geoserver/data GEOWEBCACHE_CACHE_DIR: /opt/geoserver/cache FOOTPRINTS_DATA_DIR: /opt/geoserver/footprints HTTP_SCHEME: https volumes: - ./geoserver/data:/opt/geoserver/data - ./geoserver/cache:/opt/geoserver/cache - ./geoserver/footprints:/opt/geoserver/footprints - ./geoserver/fonts:/usr/share/fonts/custom
解决方案
在GeoServer的环境变量中添加HTTP_PROXY_PORT: 10443即可解决重定向丢失端口的问题。
内容的提问来源于stack exchange,提问作者Ted Yu
相关产品推荐
相关产品推荐

