NGINX позволяет перенаправлять запросы с одного сервера на другой. Обычно он используется для перенаправления запросов от обратного прокси-сервера к веб-серверу. Во многих случаях он также используется для перенаправления URL-адресов в случае изменения или перемещения вашего домена. Но иногда вам может понадобиться перенаправить запрос на другой порт в NGINX. В этой статье мы узнаем, как это сделать.
Как перенаправить запрос на другой порт в NGINX
Допустим, вы хотите перенаправить запрос http://example.com/product/abc на http://example.com:9000/abc. В этом случае вы можете добавить блок location в конфигурацию вашего сервера NGINX.
1 2 3 | location /product { proxy_pass http://127.0.0.1:9000/; } |
В приведенном выше коде мы создаем блок location для URL, начинающихся с /route. Не забудьте добавить прямую косую черту после номера порта 9000, как показано выше.
Приведенный выше блок перенаправления будет перенаправлять запрос на разные порты одного и того же сервера. Если вы хотите перенаправить запрос на другой порт на другом сервере (например, 54.43.32.21), замените 127.0.0.1 на этот номер порта.
1 2 3 | location /product { proxy_pass http://54.43.32.21:9000; } |
Если вы хотите перенаправить запрос http://example.com/product/abc на http://example.com:9000/product/abc, добавьте следующий блок location. В этом случае не добавляйте прямую косую черту после номера порта, как показано ниже.
1 2 3 | location /product { proxy_pass http://127.0.0.1:9000; } |
В качестве альтернативы вы также можете использовать следующую конфигурацию, которая является более подробной и предлагает больше возможностей для настройки. Например, эта конфигурация позволяет сохранить имя хоста, в то время как вышеприведенные конфигурации этого не делают.
1 2 3 4 5 6 | location /route/ { proxy_pass http://127.0.0.1:9000; 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 /route/' вместо 'location /route' и наоборот.
Заключение
В этой статье мы изучили несколько простых способов перенаправления запроса на другой порт в том же сервере NGINX.