gpt4 book ai didi

docker - 通过php-fpm容器中的Nginx容器文件服务?

转载 作者:行者123 更新时间:2023-12-02 19:18:28 27 4
gpt4 key购买 nike

我的应用程序文件位于phpfpm容器中,我需要通过nginx提供它们。我想避免在两个容器中装入相同的文件,所以我试图找出一种仅从phpfpm容器中提供文件的方法。当我使用反向代理到其他容器时:

server {
listen 0.0.0.0:8080;
server_name myapp.test;

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;

proxy_pass http://phpfpm:900;
proxy_redirect off;
}
}

我收到带有以下错误日志记录的 502 Bad Gateway 错误:

1 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 172.18.0.1, server: myapp.test, request: "GET / HTTP/1.1", upstream: "http://172.18.0.2:9000/", host: "myapp.test"



我猜是因为 phpfpm容器不是HTTP服务器。

因此,或者,我尝试像这样使用 fastcgi_pass:
server {
listen 0.0.0.0:8080;
server_name myapp.test;

root /app;

location / {
try_files $uri $uri/index.php;
}

location ~ \.php$ {
fastcgi_pass phpfpm:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}

该服务按预期提供 *.php文件,但不提供其他文件(即静态内容)。

如何使 nginx.php容器中的 phpfpm和静态文件提供服务?

这是我的docker-compose.yml:

version: "3.7"
services:
phpfpm:
image: "php-fpm:7.3"
volumes:
- ./site:/app
ports:
- "9000:9000"

nginx:
image: "nginx:1.17"
volumes:
- ./nginx/app.conf:/opt/nginx/conf/nginx.conf
ports:
- "80:8080"

最佳答案

您有2个问题:

  • 您没有将静态内容装载到Nginx容器中,因此无法提供它。将此卷添加到您的容器
  • ./site/public/:/var/www/html/public/:ro
  • 您需要设置Nginx配置才能提供此静态内容。你可以试试这个
  • server {
    listen 0.0.0.0:8080;
    server_name myapp.test;
    root /var/www/html/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
    try_files $uri /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt { access_log off; log_not_found off; }

    location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass phpfpm:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi.conf;
    }
    }

    关于docker - 通过php-fpm容器中的Nginx容器文件服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61840910/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com