Nginx

通過非 docker NGINX 提供 Docker PHP FPM 內容

  • April 19, 2021

我正在嘗試使用 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:90000.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 無效。

引用自:https://serverfault.com/questions/1059824