Nginx Docker Container - 将php文件请求转发到php-fpm容器

时间:2018-02-27 13:40:24

标签: php docker nginx raspberry-pi

我已经在超级用户(https://superuser.com/questions/1298776/nginx-execute-php-files-in-different-docker-container)上问了同样的问题,但是无法得到答案,也许这个问题对于SU来说太具体了。

我正在使用一个自动的docker-image for php-fpm和nginx(https://hub.docker.com/r/tobi312/rpi-php/https://hub.docker.com/r/tobi312/rpi-nginx/)在覆盆子pi上运行,顶部是libreelec。

通过运行以下命令,php容器在端口9000打开的情况下成功启动:

docker run --name php -v /var/www/restTools:/var/www/html -d 3dd6ff8c0d58

之后我开始使用这样的nginx容器:

docker run --name nginx -d -p 8081:80 --link php:9000 -v /var/www/restTools:/var/www/html 0d90cc6eb00f

两个容器都在运行,但是nginx没有执行php文件,它只是提供下载。

过了一会儿,我尝试通过在命令中添加default.conf将连接详细信息提交到php-container -v /var/www/.config/nginx:/etc/nginx/conf.d:ro

摘录自default.conf

root /var/www/html;

location / {
    root /var/www/html;
    index index.html index.htm index.php;
}

location ~ \.php$ {
    root /var/www/html;
    fastcgi_pass php:9000;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_index index.php;
    fastcgi_param REMOTE_ADDR $http_x_real_ip;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    include fastcgi_params;
    if (!-f $document_root$fastcgi_script_name) {
        return 404;
    }
}

我错过了什么?

1 个答案:

答案 0 :(得分:0)

您正尝试使用docker的(已弃用!)“ link”选项,这本身不是问题,但您必须遵守the syntax

--link <name or id>:alias

所以,您必须替换您的

--link php:9000

正确

--link php

您不需要别名,因为您将fpm容器命名为与default.conf中引用的相同。 另一个重要的事情是将php文件文件夹安装在fpm容器中,但是您已经正确地做到了。