我在 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。