我有这个configuration来访问geoserver:
location /geoserver { proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8080/geoserver/; proxy_pass_header Set-Cookie; proxy_redirect off; } }
每当这个工作正常,当我访问geoserver网页,但nginx不处理这样的请求:
http://localhost:8080/geoserver/ows?SERVICE=WMS&access_token=4r3irW5W3DboGs…7091932%2C-5009377.085697312%2C-10018754.17139462%2C-9.313225746154785e-10
这个错误出现在控制台中:
GET http://localhost:8080/geoserver/ows?SERVICE=WMS&access_token=4r3irW5W3DboGs…7091932%2C-5009377.085697312%2C-10018754.17139462%2C-9.313225746154785e-10 net::ERR_CONNECTION_REFUSED
我想让nginx用IPreplacehttp://localhost:8080
更新
我删除了斜线,但一些请求不能正常工作
OPTIONS http://localhost:8080/geoserver/wms?SERVICE=WMS&REQUEST=GetCapabilities&TILED=true&VERSION=1.1.1 net::ERR_CONNECTION_REFUSED
我在浏览器中复制了URL,并用IP代替localhost:8080 !
完整configuration:
upstream django { server unix:///tmp/uwsgi.sock; # for a file socket } server { listen 80; server_name XX.XX.XX.XX; charset utf-8; #Max upload size client_max_body_size 1024M; # adjust to tast location / { uwsgi_pass django; include /etc/nginx/uwsgi_params; } location /geoserver { proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8080/geoserver; proxy_pass_header Set-Cookie; proxy_redirect off; } }
在你的问题中,你有一个URI的前缀位置和prox_pass语句。 在需要nginx执行别名function的location , location值和proxy_pass URI应该以/结尾,或者既不以/结尾,映射的URI也不会变形。
location /geoserver { ... proxy_pass http://localhost:8080/geoserver; ... }
请参阅此文档了解更多
然而,在你的情况下,你正在映射/geoserver到/geoserver这是毫无意义的,所以非URI版本的proxy_pass就足够了,将是更有效的:
proxy_pass http://localhost:8080;