Nginx php-fpm beim Docker-Desktop-Problem

Nginx php-fpm beim Docker-Desktop-Problem

Ich habe nginx und php-fpm in einem einzigen Container auf Docker Desktop für Windows laufen. Ich bin IT-Mitarbeiter und kein Entwickler, also vereinfachen Sie es bitte für mich. Ich habe versucht, eine Konfiguration zum Laufen zu bringen, aber ohne Erfolg. Ich muss in der Lage sein, mehreren Subdomains die Weiterleitung zu php-fpm zu erlauben, wo die PHP-App bestimmt, welche Datenbank von einer bestimmten Subdomain geöffnet werden soll. ClientA.mydomain.com und clientB.mydomain.com sollten also alle einfach zu PHP weitergeleitet werden, und die App weiß, mit welcher Datenbank sie sich verbinden soll.

Ich habe nach Lösungen gesucht und diese gefunden, um Subdomains auf separate Sites umzuleiten, aber ich muss allen Subdomains eine einzelne Site und einen Prozess wie localhost erlauben.

Dies funktioniert einwandfrei mit localhost oder 127.0.0.1, aber wenn ich versuche, eine DNS-URL zu verwenden, meldet sich die Site nicht mehr an und alle Ajax-Aufrufe funktionieren nicht mehr. Es scheint, als würden die Sitzungsvariablen nicht mehr zurückgegeben. Die Anmeldeseite wird angezeigt, und ein fehlgeschlagenes Passwort zeigt diesen Fehler an, sodass ich weiß, dass die Site mit der richtigen Datenbank kommuniziert, aber das Protokoll zeigt keine Fehler oder Ajax-Antworten an.

server {
    listen       80  default_server;
    server_name  _;  
    # I have tried server_name *.mydomain.com and server_name .mydomain.com, the latter yeilds the same results as this current config.
    
    root /usr/share/nginx/html;
    server_tokens off;

    index index.php index.html index.htm;

    charset utf-8;
    # Add stdout logging
    error_log /dev/stdout info;
    access_log /dev/stdout;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.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;
    }
}

Ich musste viel entfernen, um die Frage zu senden.

Wenn Sie localhost oder 127.0.01 mit derselben Konfiguration verwenden, funktioniert die Anmeldung, Ajax reagiert und die Site lädt die Hauptseite wie erwartet.

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&

Wenn ich den URL-Eintrag verwende, den ich zum Testen in meiner Hostdatei erstellt habe, scheint es, als ob JS und Ajax mit der URL nicht funktionieren.

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

Dank im Voraus.

Antwort1

@MichaelHampton hatte recht, ich habe mehrere Dinge ausprobiert und festgestellt, dass bei Weiterleitungen neue Sitzungen erstellt wurden, was dazu führte, dass das System immer wieder auf der Anmeldeseite landete. Es gibt eine interne Einstellung in der App, die sich mit Cross-Domain-Cookies befasst, und als ich diese deaktiviert habe, funktioniert die Site über eine Domänen-URL. Da ich gerade teste, verwende ich nur http und nicht https.

verwandte Informationen