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

URL-адрес запроса настройки прокси-сервера nginx для последующего запроса

server {
    server_name 127.0.0.1;
    listen 3000;

    location = /auth {
        internal;
        proxy_pass http://127.0.0.1:8088/auth;

    }


    location / {
        auth_request /auth;

        # force Nginx to preserver the response proxy_set_header
        auth_request_set $falure_reason $sent_http_x_authenticationfail;

        error_page 401 =200 /login;
        proxy_pass http://127.0.0.1:9000;
    }

    location /login {           
        proxy_pass http://127.0.0.1:8081/sso;
    }
}

Я работаю над службой аутентификации. Идея состоит в том, что когда запрос попадает в корневой каталог, он будет аутентифицирован (проверяет токен) через / auth, и сервер аутентификации сидит http://127.0.0.1:8088/auth для обработки всех запросов авторизации. Затем, если токен не установлен, сервер аутентификации ответит 401, и страница ошибки поймает это и перенаправит на / вход в прокси на мой сервер входа. http://127.0.0.1:8081/sso. Но проблема в том, что когда я прохожу через / -> / auth -> / login, URL-адрес запроса, возвращаемый с сервера, по-прежнему 127.0.0.1:3000/sso вместо ttp: //127.0.0.1: 8081 / sso, потому что впоследствии я необходимо отправить последующий почтовый запрос на http://127.0.0.1:8081/sso с идентификатором входа / паролем пользователя. Но nginx указывает мне на 127.0.0.1:3000/sso в браузере.

В конце концов, я разобрался сам. Поскольку nginx действует как обратный прокси-сервер, клиент будет иметь доступ только к URL-адресу прокси 127.0.0.1:3000/sso, поскольку nginx заботится о пересылке запроса и предоставляет клиенту только свой URL-адрес, а не URL-адрес своего базового сервера. Следовательно, чтобы отправить почтовый запрос обратно со стороны клиента на http://127.0.0.1:8081/sso, Мне нужно установить местоположение sso на сервере nginx для пересылки всех запросов с 127.0.0.1:3000/sso на http://127.0.0.1:8081/sso в качестве последовательного механизма прокси.