Docker 桌面上的 Nginx php-fpm 问题

Docker 桌面上的 Nginx php-fpm 问题

我在 Windows 版 Docker 桌面上的单个容器中运行 nginx 和 php-fpm。我是 IT 人员,不是开发人员,所以请帮我简化一下。我一直在尝试让配置工作,但没有成功。我需要能够允许多个子域传递到 php-fpm,php 应用程序将确定按特定子域打开哪个数据库。因此 clientA.mydomain.com clientB.mydomain.com 都应该直接传递到 php,应用程序将知道要连接到哪个数据库。

我已经搜索并找到了将子域名重定向到单独站点的解决方案,但我需要允许所有子域名到单个站点并像 localhost 那样进行处理。

使用 localhost 或 127.0.0.1 时,此操作正常,但当我尝试使用 dns url 时,站点停止登录,所有 ajax 调用都停止工作。似乎会话变量停止传回。登录页面显示,密码失败将显示该错误,因此我知道站点正在与正确的数据库通信,但日志未显示任何错误或 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 是正确的,我尝试了几种方法,发现在重定向期间会创建新会话,这导致系统始终停留在登录页面。应用程序中有一个处理跨域 cookie 的内部设置,当我关闭该设置时,网站会使用域 URL 运行。由于我正在测试,因此我只使用 http 而不是 https。

相关内容