【问题标题】:Docker + nginx + PHP - nginx does not point to the root directory?Docker + nginx + PHP - nginx 不指向根目录?
【发布时间】:2017-01-01 20:02:35
【问题描述】:

我按照guide 在 Docker 上运行 PHP,但 nginx 确实指向我在 site.conf 中设置的根目录。

docker-compose.yml:

nginx:
    image: nginx:latest
    ports:
        - 8080:80
    volumes:
        - ./code:/code
        - ./site.conf:/etc/nginx/conf.d/site.conf
    links:
        - php
php:
    image: php:7-fpm
    volumes:
        - ./code:/code

site.conf:

server {
    index index.php index.html;
    server_name localhost;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /code;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

代码/index.php:

<?php
echo phpinfo();

在我的终端上,我运行:

docker-compose up

结果:

但应该是:

有什么想法吗?

编辑:

server {
    index index.php index.html;
    server_name docker.loc;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /code;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

我在运行docker-compose up 时收到此错误:

nginx_1 | 172.17.0.1 - - [01/Jan/2017:20:35:17 +0000] "GET / HTTP/1.1" 403 571 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/55.0.2883.87 Chrome/55.0.2883.87 Safari/537.36"
nginx_1 | 2017/01/01 20:35:17 [error] 6#6: *5 directory index of "/code/" is forbidden, client: 172.17.0.1, server: docker.php, request: "GET / HTTP/1.1", host: "docker.php:8080"

docker.php 来自哪里??

【问题讨论】:

    标签: php nginx docker docker-compose


    【解决方案1】:

    您有域名冲突。在 site.conf 中设置server_name docker.loc;。然后将 127.0.0.1 docker.loc 添加到本地计算机上的 /etc/hosts 中。然后你可以通过docker.loc:8080访问docker化的应用程序

    或者您可以尝试解决冲突。我认为问题可能在/etc/nginx/sites-available/default

    【讨论】:

    • 谢谢。但是当我浏览docker.loc:8080 的网站时,我现在得到一个403 Forbidden 的页面
    • 应该可以,我测试过了。显示您的配置
    • 哪个配置文件?
    • site.conf 并检查code 文件夹,可能它不存在index.php
    • 该文件夹确实存在。我已经更新了我的问题。看一看。谢谢。
    猜你喜欢
    • 2016-01-17
    • 2018-11-19
    • 2018-04-29
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 2013-11-06
    相关资源
    最近更新 更多