Nginx php-fpm no problema do desktop Docker

Nginx php-fpm no problema do desktop Docker

Tenho nginx e php-fpm rodando em um único contêiner no Docker desktop para Windows. Eu sou TI e não um desenvolvedor, então, por favor, simplifique isso para mim. Tenho tentado fazer uma configuração funcionar sem sucesso. Preciso permitir que vários subdomínios passem para o php-fpm, onde o aplicativo php determinará qual banco de dados abrir por subdomínio específico. então clientA.mydomain.com clientB.mydomain.com deve passar para php, e o aplicativo saberá a qual banco de dados se conectar.

Pesquisei e encontrei soluções para redirecionar subdomínios para sites separados, mas preciso permitir que todos os subdomínios sejam um único site e processem como o localhost faz.

Isso funciona bem usando localhost ou 127.0.0.1, mas quando tento usar um URL DNS, o site para de fazer login e todas as chamadas ajax param de funcionar. Parece que as variáveis ​​de sessão param de ser repassadas. A página de login é exibida e uma senha com falha mostrará esse erro, então sei que o site está se comunicando com o banco de dados adequado, mas o log não mostra nenhum erro ou respostas ajax.

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;
    }
}

Tive que remover muita coisa para enviar a pergunta.

Usando localhost ou 127.0.01 com esta mesma configuração, o login funciona, o ajax está respondendo e o site carrega a página principal conforme o esperado.

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&

Ao usar a entrada de URL que criei em meu arquivo host para testar, parece que js e ajax não estão funcionando usando 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

Desde já, obrigado.

Responder1

@MichaelHampton estava correto, tentei várias coisas, percebi que novas sessões estavam sendo criadas durante os redirecionamentos, o que fazia com que o sistema continuasse acessando a página de login. Há uma configuração interna no aplicativo que trata de cookies entre domínios e quando eu desligo isso, o site funciona usando um URL de domínio. Como estou em teste, estou usando apenas http e não https.

informação relacionada