Я успешно установил GeoServer 2.11.1 на свой Ubuntu 16.04 LTS. с nginx. Я установил прокси с помощью nginx после этого руководствоИтак, теперь мой файл конфигурации для nginx выглядит так:
server {
listen 80;
root /usr/share/nginx/www;
index index.html index.htm;
proxy_redirect off;
location /geodata {
include proxy_params;
proxy_pass http://localhost:8080/geoserver/web/;
}
}
Когда я вхожу localhost/geodata/
Я захожу на главную страницу GeoServer. Все идет нормально.
Тем не мение,
http://localhost/j_spring_security_check: /j_spring_security_check not found
Demos -> WCS request builder
тогда я получаю сообщение об ошибке: /geoserver/web/wicket/bookmarkable/org.geoserver.wcs.web.demo.WCSRequestBuilder;jsessionid=1i5x791bktwq9a2ug77vyax7n?4 not found
В последнем обратите внимание, как адрес geoserver
, и не geodata
. Это говорит мне, что каким-то образом proxy_pass
не работает ни для чего, кроме главной страницы.
Это proxy_pass
недостаточно для того, чтобы это работало?
РЕДАКТИРОВАТЬ Вот журнал одного успешного и одного неудачного события.
127.0.0.1 - - [21/Jun/2017:08:48:22 +0200] "GET /geodata/wicket/bookmarkable/org.geoserver.wcs.web.demo.WCSRequestBuilder;jsessionid=1i945lcowjlas113w2ru2mo5j HTTP/1.1" 302 0 "http://localhost/geodata/wicket/bookmarkable/org.geoserver.web.DemoPage;jsessionid=1i945lcowjlas113w2ru2mo5j" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0"
127.0.0.1 - - [21/Jun/2017:08:48:22 +0200] "GET /geoserver/web/wicket/bookmarkable/org.geoserver.wcs.web.demo.WCSRequestBuilder;jsessionid=1i945lcowjlas113w2ru2mo5j?3 HTTP/1.1" 404 152 "http://localhost/geodata/wicket/bookmarkable/org.geoserver.web.DemoPage;jsessionid=1i945lcowjlas113w2ru2mo5j" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0"
Когда мы получим несколько журналов, будет легче диагностировать, но для начала, не могли бы вы попробовать:
server {
listen 80;
root /path/to/geoserver/directory;
index index.html index.htm;
location ^~ /geoserver/web/ {
rewrite ^/geoserver/web(/.*)$ /geodata$1 permanent;
}
location ^~ /j_spring_security_check {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/geoserver/;
}
location ^~ /geodata/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/geoserver/web/;
}
}
Если вы на сервере перейдете к http: // локальный: 8080 / геосервер (не геосервер / веб) - все равно работает?
Я думаю, здесь есть две проблемы:
Базовый URL-адрес вашего программного обеспечения геосервера установлен на /geoserver/web
, что означает, что он создает ссылки, начиная с этого. Вам необходимо изменить конфигурацию программного обеспечения, чтобы изменить базовый URL.
Ваша конфигурация nginx выполняет каждый запрос, который начинается с /geodata
перейти к http://localhost:8080/geoserver/web/
URL на бэкэнде. Следовательно, остальная часть URL-адреса теряется в процессе. Чтобы исправить это, вам нужно использовать следующую конфигурацию:
server {
listen 80;
root /usr/share/nginx/www;
index index.html index.htm;
proxy_redirect off;
location ~ ^/geodata(.*)$ {
include proxy_params;
proxy_pass http://localhost:8080/geoserver/web$1;
}
}
Здесь мы фиксируем часть, появляющуюся после /geodata
в переменную, а затем добавьте содержимое переменной в proxy_pass
место назначения.