Puncte:0

Nginx php-fpm pe problema desktopului Docker

drapel it

Am nginx și php-fpm care rulează într-un singur container pe desktopul Docker pentru Windows.Eu sunt IT și nu un dezvoltator, așa că vă rog să mă amuțiți. Am încercat să fac o configurație să funcționeze fără succes. Trebuie să pot permite mai multor subdomenii să treacă la php-fpm, unde aplicația php va determina ce bază de date să deschidă după un anumit subdomeniu. asa de clientA.mydomain.com clientB.mydomain.com ar trebui să treacă doar prin php, iar aplicația va ști la ce DB să se conecteze.

Am căutat și am găsit soluții pentru a redirecționa subdomeniile către site-uri separate, dar trebuie să permit tuturor subdomeniilor să fie pe un singur site și să procesez așa cum face localhost.

Acest lucru funcționează bine folosind localhost sau 127.0.0.1, dar când încerc să folosesc o adresă URL dns, site-ul nu se mai conectează și toate apelurile ajax nu mai funcționează. Se pare că variabilele de sesiune nu mai sunt transmise înapoi. Se afișează pagina de autentificare, iar o parolă eșuată va arăta acea eroare, așa că știu că site-ul comunică cu DB adecvat, dar jurnalul nu arată erori sau răspunsuri ajax.

Server {
    asculta 80 default_server;
    numele serverului  _;  
    # Am încercat server_name *.mydomain.com și server_name .mydomain.com, acesta din urmă dă aceleași rezultate ca această configurație curentă.
    
    root /usr/share/nginx/html;
    server_tokens dezactivat;

    index index.php index.html index.htm;

    set de caractere utf-8;
    # Adăugați înregistrarea stdout
    error_log /dev/stdout info;
    access_log /dev/stdout;

    Locație / {
        try_files $uri $uri/ /index.php?$args;
    }

    locație ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

A trebuit să elimin multe pentru a trimite întrebarea.

Folosind localhost sau 127.0.01 cu aceeași configurație, autentificare funcționează, ajax răspunde și site-ul încarcă pagina principală așa cum era de așteptat.

nginx stdout | 192.168.80.1 - - [08/Sep/2021:13:23:00 +0000] „POST /login.php HTTP/1.1” 302
nginx stdout | 192.168.80.1 - - [08/Sep/2021:13:23:00 +0000] „GET / HTTP/1.1” 200 
nginx stdout | 192.168.80.1 - - [08/Sep/2021:13:23:00 +0000] „GET /framework.js?version=
nginx stdout | 192.168.80.1 - - [08/Sep/2021:13:23:00 +0000] „GET /resources/all.css 
192.168.80.1 - - [08/Sep/2021:13:23:00 +0000] „GET /resources/js/pdfjs/pdf.js 
nginx stdout | 192.168.80.1 - - [08/Sep/2021:13:23:00 +0000] „GET /app.js?version=2021
nginx stdout | 192.168.80.1 - - [08/Sep/2021:13:23:00 +0000] „GET /resources/images/login_loader_logo.gif
192.168.80.1 - - [08/Sep/2021:13:23:01 +0000] „GET /ajax.php?_dc=163110738
192.168.80.1 - - [08/Sep/2021:13:23:02 +0000] „POST /ajax.php HTTP/1.1” 200 
192.168.80.1 - - [08/Sep/2021:13:23:02 +0000] „GET /ajax.php?_dc=1631107382410&

Când folosesc intrarea URL pe care am creat-o în fișierul meu gazdă pentru a testa, se pare că js și ajax nu funcționează folosind adresa URL.

192.168.96.1 - - [08/Sep/2021:13:29:45 +0000] „GET /login.php HTTP/1.1” 200
192.168.96.1 - - [08/Sep/2021:13:29:45 +0000] „GET /showClientLogo.php HTTP/1.1” 200
192.168.96.1 - - [08/Sep/2021:13:29:46 +0000] „GET / HTTP/1.1” 302
192.168.96.1 - - [08/Sep/2021:13:29:46 +0000] „GET /login.php HTTP/1.1” 200
192.168.96.1 - - [08/Sep/2021:13:29:47 +0000] „GET /showClientLogo.php HTTP/1.1” 200
192.168.96.1 - - [08/Sep/2021:13:29:57 +0000] „POST /login.php HTTP/1.1” 302
192.168.96.1 - - [08/Sep/2021:13:29:57 +0000] „GET / HTTP/1.1” 302
192.168.96.1 - - [08/Sep/2021:13:29:57 +0000] „GET /login.php HTTP/1.1” 200
192.168.96.1 - - [08/Sep/2021:13:29:58 +0000] „GET /showClientLogo.php HTTP/1.1” 200

Mulțumesc anticipat.

Michael Hampton avatar
drapel cz
De ce crezi că aceasta este o problemă nginx? Sună ca o problemă cu aplicația. Du-te la o conversație cu dezvoltatorul său.
WillyK avatar
drapel it
Parțial pentru că aplicația și configurația funcționează bine sub IIS și php-cgi. Am instalat și configurat această aplicație de ani de zile în acest fel.Acum lucrăm la containerizarea aplicației și la utilizarea linux, nginx și php-fpm. localhost funcționează bine și este exact atunci când introduceți o adresă URL reală în amestec. Toate acestea pot funcționa în AWS așa cum sunt și poate fi o problemă de desktop docker, dar nu sunt sigur. Mulțumiri
Puncte:1
drapel it

@MichaelHampton was correct, I tried several things, noticed that new sessions were getting created during redirects which caused the system to keep landing on the login page. There is an internal setting in the app which deals with cross domain cookies and when I turned that off the site works using a domain url. Since I am in testing I am only using http and not https.

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.