官方 nginx docker 在提供静态文件时给出 403 Forbidden
Posted
技术标签:
【中文标题】官方 nginx docker 在提供静态文件时给出 403 Forbidden【英文标题】:Official nginx docker gives 403 Forbidden when serving static files 【发布时间】:2020-01-21 18:51:58 【问题描述】:我正在使用 nginx docker image 提供一个简单的 index.html 文件。 如快速指南中所述,我有一个 Dockerfile,其中包含:
FROM nginx
COPY www-root-dir /usr/share/nginx/html
(www-root-dir
只包含一个index.html
文件)
但是当我运行这个图像时,它返回 403 Forbidden。在日志中它说:
[error] 7#7: *2 "/usr/share/nginx/html/index.html" is forbidden (13: Permission denied),
我已经对此进行了搜索,并且知道它与文件权限有关。
但是我应该为此设置什么权限/所有者?我试过chown
ing 到www-data
和nginx
。 chmod
ing +rwx
也没有帮助。
我的问题是:我到底应该怎么做?而且无论解决方案是什么,为什么官方文档中没有提到?
编辑:
我也尝试过不使用自定义 html 文件。 这个简单的 Dockerfile 响应相同:
FROM nginx
# Just it!
【问题讨论】:
没有自定义html文件能成功运行吗?你映射了 80 端口吗? @Andrea 端口正常,因为我连接并看到 nginx 403 消息!但是,没有 index.html 也会发生同样的错误。 【参考方案1】:FROM nginx:alpine
COPY directory_containing_index /usr/share/nginx/html
这对我来说很好。
与 ubuntu 等同类产品相比,alpine 版本的体积非常小。 您可以在不定义自己的 Dockerfile 的情况下对其进行测试,
docker run --rm -v /directory_containing_index:/usr/share/nginx/html -p 8080:80 nginx:alpine
【讨论】:
这意味着 nginx:latest 有问题并且无法工作?但是,我接受了答案,因为绕过了我的问题。谢谢以上是关于官方 nginx docker 在提供静态文件时给出 403 Forbidden的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Docker 上使用 Nginx 和 Django 提供静态文件?
使用 Docker、nginx 和 gunicorn 提供 Django 静态文件
如何使用 docker 映像生成静态文件以从 nginx 映像提供服务?