添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
有胆有识的玉米  ·  org.apache.hc.client5. ...·  5 月前    · 
内向的冲锋衣  ·  QPainter::begin: ...·  1 年前    · 
谦逊的盒饭  ·  JavaScript 数据处理 - ...·  1 年前    · 
瘦瘦的泡面  ·  Cannot compile C code ...·  1 年前    · 
聪明伶俐的泡面  ·  Alpine镜像中not ...·  1 年前    · 

Docker nginx + php 回答 403 Forbidden

1 人关注

当我想测试我的PHP项目容器化时,我遇到了这个问题。所以我在我的笔记本电脑上安装了docker(包括下面的版本),然后我创建了nginx容器,并将php信息文件附加到 /usr/share/nginx/html 。但当我检查结果时,我得到的是403 Forbidden。我试着将php信息文件转换为HTML文件,它工作得很好!但当我将它改回为php信息文件时,我发现它被禁止。但当我把它改回php info时,我得到了403 Forbidden。我也试着在容器上安装php和php-fpm。但没有任何改变。你们能不能帮帮我。

这是我的 docker version 输出

versionClient: Docker Engine - Community
 Version:           20.10.5
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        55c4c88
 Built:             Tue Mar  2 20:18:20 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
Server: Docker Engine - Community
 Engine:
  Version:          20.10.5
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       363e9a8
  Built:            Tue Mar  2 20:16:15 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

这是位于/home/taufik/Documents/praktikum/docker/30-mar-2021/sosial-media/html的php信息文件。

phpinfo();

这是我运行nginx容器的docker命令

docker run -it --rm -dp 8080:80 --name=nginx -v $(pwd):/usr/share/nginx/html /home/taufik/html nginx

这是nginx容器的日志

/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
,/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
,/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
,10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
,10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
,/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
,/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
,/docker-entrypoint.sh: Configuration complete; ready for start up
,2021/03/30 09:33:02 [error] 32#32: *1 directory index of "/usr/share/nginx/html/" is forbidden, client: 172.17.0.1, server: localhost, request: "GET / HTTP/1.1", host: "0.0.0.0:8080", referrer: "http://0.0.0.0:9000/"
,172.17.0.1 - - [30/Mar/2021:09:33:02 +0000] "GET / HTTP/1.1" 403 555 "http://0.0.0.0:9000/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" "-"
php
docker
nginx
Taufik Maulana
Taufik Maulana
发布于 2021-03-30
1 个回答
kolaente
kolaente
发布于 2021-03-30
已采纳
0 人赞同

这个错误。

2021/03/30 09:33:02 [error] 32#32: *1 directory index of "/usr/share/nginx/html/" is forbidden, client: 172.17.0.1, server: localhost, request: "GET / HTTP/1.1", host: "0.0.0.0:8080", referrer: "http://0.0.0.0:9000/"

听起来你的php文件不是index.php,你试图访问服务器上的/,而没有文件的名字。然后它试图向你显示目录列表(你挂载在/usr/share/nginx/html/目录下的所有内容,但默认配置不允许这样做。因此出现了403,因为配置禁止显示目录列表。

试着直接用文件名来访问该文件。像localhost:8080/filename.php这样的文件应该可以。

如果你只是使用nginx容器,仅此一项就不能让你执行php脚本,因为它只有nginx,没有fpm什么。

有两种方法来解决这个问题。