Назад | Перейти на главную страницу

Как использовать обратный прокси-сервер nginx для пересылки на определенный URI

У меня есть обратный прокси-сервер nginx, который использует потоковый прокси для перехода на веб-страницу, которая использует NTLM аутентификация, но мне нужно использовать что-то похожее на директиву местоположения, чтобы указать этому обратному прокси-серверу отправлять запросы на этот сайт на определенный IRL. Например, если пользователь запросит этот сайт:

https://mysite.mydomain.com

Я хотел бы переадресовать это http://mysite.mydomain.com/xyz

Обычно я бы использовал директиву местоположения, но каждый раз, когда я добавляю директиву местоположения в свою текущую конфигурацию, я получаю сообщение об ошибке "location" directive is not allowed here in /opt/nginx/nginx.conf:43

Моя текущая конфигурация (которая содержит много вещей, которые я никогда раньше не делал из-за проблем с NTLM), показана ниже.

/opt/nginx/nginx.conf

worker_processes 1;

events {
    worker_connections 1024;
}

stream {
    upstream backend {
       hash $remote_addr consistent;

       server mysite.mydomain.com:80 weight=5;
       server 192.168.0.50:80            max_fails=3 fail_timeout=30s;


    }

server {
    listen 443 ssl;

    ssl_certificate /usr/local/nginx/conf/mydomain.com.crt;
    ssl_certificate_key /usr/local/nginx/conf/mydomain.com.key;
    ssl_session_cache shared:SSL:10m;

    ssl_session_timeout 5m;

    proxy_connect_timeout 1s;
    proxy_timeout 3s;
    proxy_pass backend;

    }

}

Я не знаю, как добавить URI / xyz. Если я добавлю его в конец любого IP-адреса в этом файле, это неправильно, и если я попытаюсь добавить директиву местоположения внутри раздела сервера, я получу эту ошибку.

Конечно, в идеале это будет фактически перенаправлять на любое расширение, которое они помещают в конце URL-адреса, и попытаться, например, / abc или / xyz перенаправить на http://mysite.mydomain.com/abc, и http://mysite.mydomain.com/xyz соответственно. Любая помощь приветствуется.

Причина, по которой я не мог найти как установить location внутри потокового прокси в потоковой документации, потому что это невозможно.

В location директива разрешена только в server{} разделы внутри http{} раздел.

Это, вероятно, было бы довольно интуитивно понятно, если бы я больше знал о разнице в работе потоковых соединений.

Этот ответ дал Максим Дунин, который мне очень помог, и он потрясающий.

Для тех, кто точно знает, как это сделать, раздел потока полностью отделен от раздела http, и вы можете поместить все необходимое в разделе http.