Docker 데스크탑 문제의 Nginx php-fpm

Docker 데스크탑 문제의 Nginx php-fpm

Windows용 Docker 데스크톱의 단일 컨테이너에서 nginx와 php-fpm을 실행하고 있습니다. 저는 IT이고 개발자가 아니므로 간단하게 설명해주세요. 나는 성공하지 못한 채 작동하도록 구성을 얻으려고 노력해 왔습니다. 여러 하위 도메인이 php-fpm을 통과하도록 허용할 수 있어야 하며, 여기서 php 앱은 특정 하위 도메인으로 열 데이터베이스를 결정합니다. 따라서 clientA.mydomain.com clientB.mydomain.com은 모두 PHP로 전달되어야 하며 앱은 연결할 DB를 알게 됩니다.

하위 도메인을 별도의 사이트로 리디렉션하는 솔루션을 검색하고 찾았지만 모든 하위 도메인을 단일 사이트로 허용하고 localhost처럼 처리해야 합니다.

이것은 localhost 또는 127.0.0.1을 사용하면 잘 작동하지만 dns url을 사용하려고 하면 사이트 로그인이 중지되고 모든 ajax 호출 작동이 중지됩니다. 세션 변수가 더 이상 전달되지 않는 것 같습니다. 로그인 페이지가 표시되고 실패한 비밀번호에는 해당 오류가 표시되므로 사이트가 적절한 DB와 통신하고 있음을 알 수 있지만 로그에는 오류나 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;
    }
}

질문을 제출하기 위해 많은 것을 제거해야 했습니다.

동일한 구성으로 localhost 또는 127.0.01을 사용하면 로그인이 작동하고 ajax가 응답하며 사이트가 예상대로 기본 페이지를 로드합니다.

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&

테스트를 위해 호스트 파일에 생성한 URL 항목을 사용할 때 js와 ajax가 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

미리 감사드립니다.

답변1

@MichaelHampton이 정확했습니다. 여러 가지를 시도했는데 리디렉션 중에 새 세션이 생성되어 시스템이 로그인 페이지에 계속 표시되는 것을 발견했습니다. 앱에는 크로스 도메인 쿠키를 처리하는 내부 설정이 있으며, 이 설정을 끄면 사이트는 도메인 URL을 사용하여 작동합니다. 테스트 중이므로 https가 아닌 http만 사용하고 있습니다.

관련 정보