Puncte:0

Antetul de autorizare lipsește la trecerea proxy NGINX la subdomeniu

drapel ng

Bună, rulez Laravel pe serverul NGINX și aș dori să folosesc capacitatea de proxy invers NGINX ca gateway API pentru aplicația mea Laravel și alte noduri API. Iată configurațiile mele:

Adresa URL a aplicației: staging-app.example.com
Punct final API al aplicației: staging-app.example.com/api
Adresa URL a gateway-ului API: api.example.com

Ceea ce vreau să fac este să redirecționez toate solicitările API api.example.com/staging-app la staging-app.example.com/api. Am reușit să redirecționez cererea API, dar cumva Antet de autorizare nu este transmisă la trecerea proxy, rezultând 401 neautorizat, în timp ce alte anteturi sunt transmise.

Aici este curentul meu api.example.com configurație nginx:

Server {
        nume_server api.example.com;


        locație /staging-app {
                rescrie ^/staging-app/(.*)$ /$1 pauză; 
                proxy_pass http://staging-app.example.com/;
        }

        locație /test {
                rescrie ^/test/(.*)$ /$1 pauză;
                proxy_pass http://127.0.0.1:3333/;
         }

    asculta [::]:443 ssl; # gestionat de Certbot
    asculta 443 ssl; # gestionat de Certbot
    ssl_certificate /etc/letsencrypt/live/api.example.com/fullchain.pem; # gestionat de Certbot
    ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem; # gestionat de Certbot
    includ /etc/letsencrypt/options-ssl-nginx.conf; # gestionat de Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # gestionat de Certbot

}
Server {
    dacă ($gazdă = api.example.com) {
        returnează 301 https://$host$request_uri;
    } # gestionat de Certbot


        asculta 80;
        asculta [::]:80;

        nume_server api.example.com;
    întoarce 404; # gestionat de Certbot
}

iar pentru aplicația mea laravel, folosesc configurația dată de la Laravel înșiși

Actualizare 1: am încercat să adaug proxy_set_header Testare valoare de testare direct in blocul de locatii, dar nici nu pare sa functioneze

Ivan Shatsky avatar
drapel gr
Nimic nu ar trebui să-l împiedice pe nginx să treacă antetul „Autorizare” în amonte. Cu toate acestea, nu transmiteți solicitarea către punctul final `/api`; pentru a face acest lucru, utilizați `location /staging-app { proxy_pass http://staging-app.example.com/api; }` în schimb. De fapt, nu sunt necesare reguli de rescriere pentru ca configurația dvs. să elimine prefixul URI; verificați [this](https://stackoverflow.com/questions/53649885/a-little-confused-about-trailing-slash-behavior-in-nginx) SO thread pentru a afla de ce.
Kevin Yobeth avatar
drapel ng
Am instalat [telescope](https://laravel.com/docs/9.x/telescope) care îmi permite să văd cererile primite. Solicitarea ajunge cu succes cu punctul final corect, dar lipsește „antetul de autorizare”. Când încerc să adaug un alt antet, cum ar fi „authorizationzz”, acesta este trecut.
Puncte:0
drapel cn

Încercați să adăugați următoarele la configurația dvs. pentru serverul care ascultă pe portul 443:

proxy_http_versiunea 1.1;
proxy_set_header „Conexiune” „”;

Acest lucru va face ca conexiunea de la master și agenți să fie persistentă, care este necesară pentru autentificare în unele configurații

config doc

nginx keep-alive doc

Kevin Yobeth avatar
drapel ng
Nu, antetul de autorizare tot nu va trece. Am încercat să adaug `proxy_set_header Test testingvalue` direct în blocul de locație, dar cumva valoarea nu este adăugată la cerere.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.