gpt4 book ai didi

php - 如何使PHP-FPM与FastCGI一起与Nginx-proxy一起使用?

转载 作者:行者123 更新时间:2023-12-02 17:36:02 25 4
gpt4 key购买 nike

我正在尝试通过php-fpm使nginx-proxythe official php imagefastcgi变体一起工作。不幸的是,我似乎无法这样做。我确定问题只是我不知道的简单问题。
我已尽我所能为nginx-proxy遵循the instructions,并将其归结为一种非常简单的方法来重新创建问题。这是我的docker-compose.yml文件:

version: "3"

services:
proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
environment:
- DEFAULT_HOST=test.local

fpm:
image: php:fpm
environment:
- VIRTUAL_HOST=test.local
- VIRTUAL_PROTO=fastcgi
然后,我通过运行以下命令放入一个简单的 index.php文件:
docker container exec -it web_fpm_1 /bin/bash -c 'echo "<?php phpinfo(); ?>" > /var/www/html/index.php'
(由于此项目位于名为 web_的目录中,因此将 web/放在前面。)
我还修改了 hosts文件,将 test.local指向 127.0.0.1,因此可以对其进行测试。
但是,每次尝试浏览到 test.local都会导致白页空白。
据我所知, web_proxy_1容器的日志未显示任何异常情况:
❯ docker container logs web_proxy_1
WARNING: /etc/nginx/dhparam/dhparam.pem was not found. A pre-generated dhparam.pem will be used for now while a new one
is being generated in the background. Once the new dhparam.pem is in place, nginx will be reloaded.
forego | starting dockergen.1 on port 5000
forego | starting nginx.1 on port 5100
dockergen.1 | 2020/07/20 19:24:54 Generated '/etc/nginx/conf.d/default.conf' from 2 containers
dockergen.1 | 2020/07/20 19:24:54 Watching docker events
dockergen.1 | 2020/07/20 19:24:54 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification 'nginx -s reload'
nginx.1 | test.local 172.18.0.1 - - [20/Jul/2020:19:25:12 +0000] "GET / HTTP/1.1" 200 5 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
nginx.1 | test.local 172.18.0.1 - - [20/Jul/2020:19:25:13 +0000] "GET /favicon.ico HTTP/1.1" 200 5 "http://test.local/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
web_fpm_1容器的日志显示除200响应外,没有其他任何发送:
❯ docker container logs web_fpm_1
[20-Jul-2020 19:24:54] NOTICE: fpm is running, pid 1
[20-Jul-2020 19:24:54] NOTICE: ready to handle connections
172.18.0.3 - 20/Jul/2020:19:25:12 +0000 "- " 200
172.18.0.3 - 20/Jul/2020:19:25:13 +0000 "- " 200
我究竟做错了什么?
顺便说一句,我在 nginx-proxy reponginx-proxy Google Groupphp repo上问了这个问题。我要么没有回应,要么他们推卸责任。

最佳答案

默认生成的nginx-proxy配置未完全起作用。
我认为 VIRTUAL_ROOT environment variable搞砸了,因为问题的根源是PHP通过SCRIPT_FILENAME获取了错误的路径(这就是为什么看不到PHP输出的原因),并且没有try_files符号的=404(这就是为什么所有东西都得到200)的原因。
我有一个使用GitHub中的docker-compose进行准备的工作设置,以演示它可以与nginx配置中的现有SCRIPT_FILENAME一起使用。
我已经将test.local更改为test.localhost
我认为要使其正常工作,您必须对nginx-proxy使用nginx模板,因此生成的default.conf确实适用于php fpm并包含缺少的fastcgi参数。
另一种不同的方法是将PHP和手动配置的Web服务器(nginx)打包在一个项目中,并在一个独立的项目中使用自动反向nginx代理。
这将使您花费额外的运行时间,但可以提供更多控制权并简化部署。
另外,您可能想看看traefik,它实际上与nginx-proxy相同。

关于php - 如何使PHP-FPM与FastCGI一起与Nginx-proxy一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62920539/

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