Я пытаюсь использовать nginx в качестве прокси-сервера для двух серверов веб-логики. Порты в weblogic - это 23823 и 23824, и я хочу, чтобы они оба были доступны с порта 8888 и отличались контекстным путем. Я пробовал эту конфигурацию:
listen 8888;
server_name vead03;
location /app1 {
proxy_pass http://127.0.0.1:23823;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /app2 {
proxy_pass http://127.0.0.1:23824;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Я могу получить доступ к обоим серверам через порты 8888 без проблем, но когда запрос попадает на сервер, я звоню request.getServerPort()
, Я получаю 80
по какой-то причине. Понятия не имею, откуда взялось это сообщение. Порт 80 отсутствует в конфигурации nginx, и я определенно не использовал его в Weblogic. Это серьезная проблема, потому что приложение ожидает получить 8888
а не 80.
Решение было довольно простым: вместо
proxy_set_header Host $host;
Мне пришлось использовать
proxy_set_header Host $host:$server_port;