Nginx
通過非 docker NGINX 提供 Docker PHP FPM 內容
我正在嘗試使用 Docker 執行 MyBB 論壇軟體,以在我已經執行 NGINX 服務其他內容的伺服器上執行它。
這就是我
docker-compose.yml
目前的樣子(我已經改變和測試了一段時間……):services: mybb: image: mybb/mybb:latest volumes: - ${PWD}/mybb:/var/www/html:rw ports: - "9000:9000" postgresql: environment: POSTGRES_DB: mybb POSTGRES_PASSWORD: password POSTGRES_USER: mybb image: postgres:13.2-alpine volumes: - ${PWD}/postgres/data:/var/lib/postgresql/data:rw version: '3.7'
這就是這個特定域的 NGINX 配置文件的樣子:
upstream mybb { server 172.20.0.2:9000 weight=5; } server { listen 80; listen [::]:80; root /home/lobo/mybb_docker/mybb; index index.html index.php; server_name mydomain.com www.mydomain.com; location / { try_files $uri $uri/ /index.php?$args; } location ~ inc/ { internal; } location ~ ^/(images|cache|jscripts|uploads)/ { access_log off; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass mybb; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } }
我也一直在改變這裡的東西……我嘗試了不同的IP地址:
127.0.0.1:9000
,0.0.0.0:9000
……但我無法讓它工作。當我訪問該網站時,它只會返回:
File not found.
有什麼我明顯做錯了嗎?或者還有什麼我可以嘗試的?
謝謝!!
編輯:添加
/var/log/nginx/error.log
:2021/04/09 10:04:56 [error] 19714#19714: *3705 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: xx.xx.xx.xx, server: mydomain.com, request: "GET / HTTP/1.1", upstream: "fastcgi://172.20.0.2:9000", host: "www.mydomain.com"
容器看到的目錄結構可能與執行 Nginx 的主機上的不同,從而導致 SCRIPT_FILENAME 和 PATH_INFO 無效。