Nginx 无法通过index.html 提供媒体服务

问题描述 投票:0回答:1

我对 Nginx 还很陌生。我想要实现的是使用它的 Docker 镜像来服务我的网页(及其所有媒体)。

我的项目结构:

.
├── nginx
│   ├── conf.d
│   └── nginx.conf
└── www
    ├── documents
    ├── favicon.ico
    ├── images
    ├── index.css
    ├── index.html
    ├── index.js
    └── resources

请注意,

conf.d
nginx.conf
与默认配置相同。 我使用以下 Docker 命令来启动容器:

sudo docker run --name nginx \
-p 80:80 \
-v ./www:/usr/share/nginx/html \
-v ./nginx/conf.d:/etc/nginx/conf.d \
-d nginx

导航到浏览器后

localhost
,我收到了具有其样式和功能的网页,但图像和字体丢失了。浏览器的控制台给了我
GET 403
错误,Docker日志是:

*1 open() "/usr/share/nginx/html/images/close.svg" failed (13: Permission denied),
 client: 172.17.0.1, server: localhost, request: 
"GET /images/close.svg HTTP/1.1", host: "localhost", referrer: "http://localhost/"
...

我已经检查过文件和目录的权限,都是

-rw-rw-r--
。 我认为问题可能是我在
index.html
内使用相对路径来加载资源,因此我将以下内容附加到
./nginx/conf.d/default.conf
:

的配置文件中
    location /resources/ {
        root   /usr/share/nginx/html;
    }

    location /documents/ {
        root   /usr/share/nginx/html;
    }

    location /images/ {
        root   /usr/share/nginx/html;
    }

配置的改变并没有带来解决方案。当我像

/usr/share/nginx/html/images
那样重写词根时也不会。我将不胜感激任何想法。

docker nginx nginx-config
1个回答
0
投票

终于找到问题了。
根据文档,每个公共目录应该有755(

rwxr-xr-x
)权限,而公共文件有644(
rw-r--r--
)权限。我更改了权限,现在可以使用了。

© www.soinside.com 2019 - 2024. All rights reserved.