Nginx обратный прокси-сервер для работы на localhost

РЕДАКТИРОВАТЬ. Оказывается, что моя настройка ниже работает. Раньше я получал перенаправления на порт 36000, но это было связано с некоторыми настройками конфигурации на моем бэкэнд-приложении, которое вызывало его.

Я не совсем уверен, но я считаю, что, возможно, мне захочется установить обратный прокси-сервер с помощью nginx.

У меня есть приложение, работающее на сервере с портом 36000. По умолчанию порт 36000 не является общедоступным, и я намерен для nginx прослушивать публичный URL-адрес, направлять любой запрос к URL-адресу приложению, запущенному на порту 36000. В течение всего этого процесса пользователь не должен знать, что его запрос отправляется в приложение, запущенное на моем сервере 36000.

Чтобы выразить это более конкретно, предположим, что мой url http://domain.somehost.com/

При посещении http://domain.somehost.com/ nginx должен забрать запрос и перенаправить его на приложение, уже запущенное на сервере на порте 36000, приложение выполняет некоторую обработку, и передает ответ назад. Порт 36000 не является общедоступным и не должен отображаться как часть какого-либо URL-адреса.

Я пробовал настройку, которая выглядит так:

server {
    listen 80;
    server_name domain.somehost.com
    location / {
        proxy_pass http://127.0.0.1:36000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

и в том числе внутри моего основного nginx.conf

Тем не менее, это требует от меня сделать доступным доступ к порталу 36000, и я стараюсь избегать этого. Порт 36000 также отображается как часть перенаправленного URL-адреса в веб-браузере.

Есть ли способ, которым я могу сделать то же самое, но без доступа порта 36000?

Спасибо.

Ответ 1

EDIT: Конфигурация ниже приведена в рабочей конфигурации nginx с изменением имени хоста и порта.

Вам может потребоваться настроить сервер, прослушивающий порт 36000, как сервер upstream (см. http://nginx.org/en/docs/http/ngx_http_upstream_module.html).

server {
        listen   80;
        server_name domain.somehost.com;

        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://localhost:36000/;
                proxy_redirect http://localhost:36000/ https://$server_name/;
        }
}