【问题标题】:Ubuntu nginx container 403 forbiddenUbuntu nginx 容器 403 被禁止
【发布时间】:2016-05-05 22:14:00
【问题描述】:

我已经用 nginx websever 构建了一个 ubuntu 容器。 docker 文件如下所示:

FROM ubuntu:14.04
MAINTAINER James Turnbull "james@example.com"
ENV REFRESHED_AT 2014-06-01
RUN apt-get -yqq update && apt-get -yqq install nginx
RUN mkdir -p /var/www/html/website
ADD nginx/global.conf /etc/nginx/conf.d/
ADD nginx/nginx.conf /etc/nginx/nginx.conf
EXPOSE 80

文件结构如下:

xxxxxx@xxxxx:~/sample$ ls
Dockerfile  nginx  website

用语句运行容器后:

sudo docker run -d -p 80 --name website \-v $PWD\website:/var/www/html/website \kostonstyle/nginx nginx

nginx 服务器按预期工作,但是当我请求网页时,我只有

curl 0.0.0.0:32769
<html>
  <head><title>403 Forbidden</title></head>
  <body bgcolor="white">
    <center><h1>403 Forbidden</h1></center>
    <hr><center>nginx/1.4.6 (Ubuntu)</center>
  </body>
</html>

我做错了什么?

【问题讨论】:

  • 检查您在容器中的文件夹website 权限。并将其发送至www-data
  • 不知道你为什么 curl 端口 32769 ?
  • 与您的问题无关,但您构建的 Dockerfile 是文档的一部分,但基本上仅用于说明目的。该示例中有各种未正确设置的内容(例如,正确的 logging 用于 docker)。最好使用 official NGINX 镜像作为基础镜像,因为这些镜像是为 docker 积极维护的、更小且正确设置的(例如 github.com/nginxinc/docker-nginx/blob/…

标签: ubuntu nginx docker


【解决方案1】:

403 错误可能是服务空目录和禁用目录列表(默认)的结果。有关如何解决此问题的一些提示,请参阅 resolving 403 errors

如果网站目录不包含index.html,则添加此文件

如果网站目录确实包含index.html,则可能是卷未正确安装。如果您使用的是 boot2docker,请确保您的网站目录位于 c:\users (Windows) 或 /Users (OS X) 目录下,因为 docker 只能访问这些目录(默认情况下)

【讨论】:

    【解决方案2】:

    作为对 thaJeztah 答案的补充说明,请注意 Windows 上的映射区分大小写,因此如果您希望映射到“c:\users”目录下的“站点”文件夹,则需要指定用正确的大小写映射:

    docker run --name website -p 80 -d -v /c/Users/username/Sites:/var/www/html/website nginx
    

    (我会在 thaJeztah 的回答中发表评论,但我还没有足够的代表!)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      • 2020-07-07
      • 2016-02-02
      • 1970-01-01
      • 2019-06-07
      • 2019-04-17
      相关资源
      最近更新 更多