Puncte:-1

Nginx: calea proxy_pass a domeniului către un alt server web

drapel cn

Intenționăm să facem upgrade aplicației noastre web de la aplicația nativă php la bazată pe framework PHP (Laravel) pentru a îmbunătăți securitatea și performanța aplicației. Sarcina mea este să împărți traficul acolo unde fiecare solicitare a îndreptat către domeniu app.localhost fără postfix /v3 încă transmisă la vechea aplicație php-nativ nod server web și proxy toate cererile cu /v3 cale spre laravel nod server web. Mai jos este configurația mea, care rezultă din toate activele (css și js) și URL-ul generate de Laravel au indicat calea rădăcină.

Adresa URL generată de Laravel a indicat aplicația veche

Proxy frontal (rețea publică)

Server {
    asculta 80;
    asculta [::]:80;
    nume_server app.localhost;

    # PHP Native APP
    Locație / {
        proxy_set_header Gazdă $gazdă;
        proxy_set_header X-Real-IP $adresă_la distanță;
        proxy_pass http://php-native/;
    }

    # Laravel (APP v3)
    locație /v3/ {
        proxy_set_header Gazdă $gazdă;
        proxy_set_header X-Real-IP $adresă_la distanță;
        proxy_pass http://laravel/;
    }
}

Servere web (rețea privată)

php-nativ Server Web

Server {
    asculta 80;
    asculta [::]:80;
    nume_server app.localhost;

    root /usr/share/nginx/html/webapp/app;

    Locație / {
        index index.php index.html index.htm;

        try_files $uri $uri/ /index.php?$query_string;
    }

    locație ~ \.php$ {
        fastcgi_pass php56-fpm:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/html/webapp/app/$fastcgi_script_name;
        include fastcgi_params;
    }
}

laravel Server Web

Server {
    asculta 80;
    nume_server app.localhost;

    root /usr/share/nginx/html/webapp/app-v3/public;
    index index.php index.html index.htm;

    Locație / {
        index index.php index.html index.htm;
        try_files $uri $uri/ /index.php?$query_string;
    }

    locație ~ \.php$ {
        fastcgi_pass php74-fpm:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/html/webapp/app-v3/public/$fastcgi_script_name;
        include fastcgi_params;
    }
}

Mulțumiri

Actualizați

Întrebarea mea este: cum să împărțim traficul, așa că orice solicitare a vizat app.localhost încă transmis către php-nativ server web și toate cererile vizate app.localhost/v3 indreptat spre laravel server web?

djdomi avatar
drapel za
nu sunt sigur, dar care este eroarea sau întrebarea pe care o puteți avea? nu văd jurnalele sau problemele.
Ivan Shatsky avatar
drapel gr
Aplicația ta laravel este cea care ar trebui să genereze link-uri către toate activele, fie folosind prefixul „/v3”, fie ca cele relative. De asemenea, puteți verifica răspunsul [acest](https://stackoverflow.com/a/62840133/7121513) (cu toate acestea, fiecare abordare descrisă există doar o soluție mai bună sau mai proastă).
drapel cn
@djdomi mi-am actualizat întrebarea. Mulțumiri
Puncte:0
drapel cn

mi-am gasit deja solutia.

Pasul 1: Adăugați X-Prefix-întors la proxy frontal

Server {
    asculta 80;
    asculta [::]:80;
    nume_server app.localhost;

    # PHP Native APP
    Locație / {
        proxy_set_header Gazdă $gazdă;
        proxy_set_header X-Real-IP $adresă_la distanță;
        proxy_pass http://php-native/;
    }

    # Laravel (APP v3)
    locație /v3/ {
        proxy_set_header Gazdă $gazdă;
        proxy_set_header X-Real-IP $adresă_la distanță;
        proxy_set_header X-Forwarded-Prefix „/v3”;
        proxy_pass http://laravel/;
    }
}

Pasul 2: Overide getTrustedHeaderNames funcţie

funcția protejată getTrustedHeaderNames()
{
    comutați ($this->headers) {
        cazul „HEADER_X_FORWARDED_AWS_ELB”:
        caz Solicitare::HEADER_X_FORWARDED_AWS_ELB:
            returnare Solicitare::HEADER_X_FORWARDED_AWS_ELB;

        cazul „HEADER_FORWARDED”:
        caz Solicitare::HEADER_FORWARDED:
            returnare Solicitare::HEADER_FORWARDED;

        cazul „HEADER_X_FORWARDED_FOR”:
        caz Solicitare::HEADER_X_FORWARDED_FOR:
            returnează Solicitare::HEADER_X_FORWARDED_FOR;

        cazul „HEADER_X_FORWARDED_HOST”:
        Solicitare caz::HEADER_X_FORWARDED_HOST:
            returnare Solicitare::HEADER_X_FORWARDED_HOST;

        cazul „HEADER_X_FORWARDED_PORT”:
        caz Solicitare::HEADER_X_FORWARDED_PORT:
            returnare Solicitare::HEADER_X_FORWARDED_PORT;

        cazul „HEADER_X_FORWARDED_PROTO”:
        caz Solicitare::HEADER_X_FORWARDED_PROTO:
            returnează Solicitare::HEADER_X_FORWARDED_PROTO;

        // adaugă asta pentru a suporta prefixul x-forwarded
        cazul „HEADER_X_FORWARDED_PREFIX”:
        caz Solicitare::HEADER_X_FORWARDED_PREFIX:
            returnează Solicitare::HEADER_X_FORWARDED_PREFIX;

        // adaugă | Solicitare::HEADER_X_FORWARDED_PREFIX
        Mod implicit:
            returnați Solicitare::HEADER_X_FORWARDED_FOR | Solicitare::HEADER_X_FORWARDED_HOST | Solicitare::HEADER_X_FORWARDED_PORT | Solicitare::HEADER_X_FORWARDED_PROTO | Solicitare::HEADER_X_FORWARDED_AWS_ELB;
    }

    returnează $this->headers;
}

aceasta se bazează pe problema Symfony Symfony-issues-44572

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.