Обратный прокси-сервер nginx возвращает неверный URL

991
scott8035

Я устанавливаю программное обеспечение JIRA в контейнере Docker. JIRA слушает 127.0.0.1:8080. У меня есть мой обратный прокси на https: // имя_хоста / jira, перенаправляющий трафик с помощью этой конфигурации:

location /jira { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; 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://127.0.0.1:8080; proxy_redirect off; } 

Проблема в том, что я получаю 302 петли перенаправления. Когда я захожу на https: // имя_хоста / jira, меня снова и снова перенаправляют на https: // имя_хоста / jira / jira / secure / SetupMode! Default.jspa . Это будет правильный URL, за исключением дополнительного фрагмента "/ jira".

0
С тех пор я добавил выражение «переписать ^ / jira (/ jira /.*) $ 1 last;» непосредственно перед блоком местоположения, но это, кажется, не влияет на поведение. Теперь я действительно в тупике. scott8035 6 лет назад 0

1 ответ на вопрос

0
Anaksunaman

Это будет правильный URL, за исключением дополнительного /jiraфрагмента.

Вместо того, чтобы использовать location /jira, вы можете рассмотреть возможность добавления прокси в качестве субдомена в новом блоке сервера, например:

server { listen 80; server_name jira.hostname;  location / { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; 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://127.0.0.1:8080; proxy_redirect off; } } 

Если вы решите попробовать это, не забудьте обновить любые соответствующие записи DNS (или аналогичные), чтобы они указывали jira.hostnameна правильный IP-адрес (например, 127.0.0.1 ).