【发布时间】:2020-07-15 17:26:59
【问题描述】:
我试图通过fastcgi 让nginx-proxy 与the official php image 的php-fpm 变体一起工作。不幸的是,我似乎无法这样做。我确定问题只是一些我不知道的简单问题。
我已尽我所能关注 the instructions 的 nginx-proxy,并将其归结为一种非常简单的方法来重新创建问题。这是我的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 repo、nginx-proxy Google Group 和php repo 上问过这个问题。我要么没有回应,要么他们推卸责任。
【问题讨论】:
-
试试
curl http://test.local/var/www/html/index.php让我知道这是否可行 -
能否请您显示 nginx 日志。
-
您好,感谢您的回复。 @WSMathias9:恐怕结果什么都没有。它什么也不返回,就像转到页面本身返回一个空白页一样。 @丹尼尔:完成了。我已经编辑了原始帖子以包含代理的日志。
-
让两个服务在
docker-compose.yml中通过volumes共享/var/www/html/index.php和/var/run/docker.sock:/tmp/docker.sock。走着瞧吧。您也可以将它们放在同一个网络中。 -
@BentCoder 这不是它应该配置的。不要只是尝试打开 777 并为一切付出一切,然后“看看会发生什么”。这就是您为黑客打开服务器并使系统不稳定的方式。非常糟糕的建议。数据只能在 1 个容器中。
标签: php docker fastcgi jwilder-nginx-proxy