Рейтинг:0

Отсутствует заголовок авторизации при переходе прокси-сервера NGINX к поддомену

флаг ng

Привет, я запускаю Laravel на сервере NGINX, и я хотел бы использовать возможность обратного прокси-сервера NGINX в качестве шлюза API для моего Laravel и другого приложения API узла. Вот мои конфигурации:

URL-адрес приложения: промежуточное приложение.example.com
Конечная точка API приложения: промежуточное приложение.example.com/api
URL шлюза API: api.example.com

Что я хочу сделать, так это перенаправить все запросы API api.example.com/staging-приложение к промежуточное приложение.example.com/api. Мне удалось перенаправить запрос API, но почему-то Заголовок авторизации не передается на прокси-проход, что приводит к 401 несанкционированному доступу, в то время как другой заголовок передается.

Вот мой текущий api.example.com конфиг нгинкс:

сервер {
        имя_сервера api.example.com;


        местоположение / промежуточное приложение {
                переписать ^/staging-app/(.*)$ /$1 break; 
                proxy_pass http://staging-app.example.com/;
        }

        местоположение/тест {
                переписать ^/test/(.*)$ /$1 break;
                прокси_пароль http://127.0.0.1:3333/;
         }

    слушать [::]:443 ssl; # под управлением Certbot
    слушать 443 ssl; # под управлением Certbot
    ssl_certificate /etc/letsencrypt/live/api.example.com/fullchain.pem; # под управлением Certbot
    ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem; # под управлением Certbot
    включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot

}
сервер {
    если ($ хост = api.example.com) {
        вернуть 301 https://$host$request_uri;
    } # управляется Certbot


        слушать 80;
        слушать [::]:80;

        имя_сервера api.example.com;
    вернуть 404; # под управлением Certbot
}

и для моего приложения laravel я использую конфигурацию, указанную в сами Laravel

Обновление 1: я попытался добавить proxy_set_header Тестовое тестовое значение в блоке местоположения напрямую, но, похоже, он тоже не работает

Ivan Shatsky avatar
флаг gr
Ничто не должно мешать nginx передать заголовок «Авторизация» вашему восходящему потоку. Однако вы не передаете свой запрос в конечную точку `/api`; для этого используйте `location /staging-app { proxy_pass http://staging-app.example.com/api; }` вместо этого. На самом деле, для вашей конфигурации вообще не требуется никаких правил перезаписи для удаления префикса URI; проверьте [этот] (https://stackoverflow.com/questions/53649885/a-little-confused-about-trailing-slash-behavior-in-nginx) поток SO, чтобы узнать, почему.
Kevin Yobeth avatar
флаг ng
Я установил [telescope](https://laravel.com/docs/9.x/telescope), который позволяет мне видеть входящие запросы. Запрос успешно получен с правильной конечной точкой, но отсутствует «заголовок авторизации». Когда я пытаюсь добавить другой заголовок, такой как `authorizationzz`, он проходит.
Рейтинг:0
флаг cn

Попробуйте добавить следующее в конфигурацию для прослушивания сервера на порту 443:

прокси_http_версия 1.1;
proxy_set_header "Соединение" "";

Это сделает соединение от мастера и агентов постоянным, что необходимо для аутентификации в некоторых настройках.

документ конфигурации

Документация по поддержке активности nginx

Kevin Yobeth avatar
флаг ng
Нет, заголовок авторизации все равно не пройдет. Я попытался добавить `proxy_set_header Test testingvalue` непосредственно в блок местоположения, но каким-то образом это значение не добавляется к запросу.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.