我关注这个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
站点.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 是从哪里来的?
最佳答案
您有域名冲突。在 site.conf 中设置 server_name docker.loc;
。然后将 127.0.0.1 docker.loc
添加到本地计算机上的/etc/hosts 中。然后您可以通过 docker.loc:8080 访问 Docker 化的应用程序
或者您可以尝试解决冲突。我认为问题可能在 /etc/nginx/sites-available/default
关于php - Docker + nginx + PHP - nginx不指向根目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41418533/