NGINX: переписать URL-адрес и обратный прокси-сервер на другой порт

У меня возникают трудности с переписыванием URL-адреса и обратным прокси-сервером запроса к весеннему загрузочному приложению. Перезапись работает, но я теряю номер порта, из-за чего он не работает. Например, localhost:80/order.pl преобразуется в localhost/home. Порт теряется, и приложение не получает запрос
Похожие примеры онлайн не работают.

server
{
    listen 80;
    server_name localhost;
    set $upstream localhost:8050;

    location ~"^\/order.pl$"
    {
        rewrite "^\/order.pl$ "/home" permanent;
    }

    location /
    {
        proxy_set_header X - Forwarded - For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X - Real - IP $remote_addr;
        proxy_buffering off;
        proxy_connect_timeout 30;
        proxy_send_timeout 30;
        proxy_read_timeout 30;
        proxy_pass http: //$upstream;
    }
}

Если я не перезаписываю, обратный прокси работает, но при перезаписи я теряю номер порта. Любая дополнительная информация будет очень полезна.

Спасибо


person regenbar    schedule 21.06.2019    source источник


Ответы (1)


Nginx обычно не указывает порт как часть внешнего перенаправления, если номер порта совпадает с портом по умолчанию для схемы. Порт 80 для http и порт 443 для https.

Вы можете явно указать порт в операторе перезаписи.

Например:

location = /order.pl {
    return 301 $scheme://$host:$server_port/home;
}

Примечание. Для проверки я использовал curl, так как браузер удалил порт из адресной строки по тем же причинам.

person Richard Smith    schedule 22.06.2019