geoserver nginx proxy_pass工作不正常

我有这个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的locationlocation值和proxy_pass URI应该以/结尾,或者既不以/结尾,映射的URI也不会变形。

 location /geoserver { ... proxy_pass http://localhost:8080/geoserver; ... } 

请参阅此文档了解更多

然而,在你的情况下,你正在映射/geoserver/geoserver这是毫无意义的,所以非URI版本的proxy_pass就足够了,将是更有效的:

 proxy_pass http://localhost:8080;