Docker jwilder/nginx禁止给予403许可
我正在尝试使用一个带有nginx反向代理的静态index.html文件为多个容器提供服务 我试图按照文档创建一个默认位置Docker jwilder/nginx禁止给予403许可,docker,nginx,reverse-proxy,jwilder-nginx-proxy,Docker,Nginx,Reverse Proxy,Jwilder Nginx Proxy,我正在尝试使用一个带有nginx反向代理的静态index.html文件为多个容器提供服务 我试图按照文档创建一个默认位置 location / { root /app; index index.html; try_files $uri $uri/ /index.html; } 如果我在容器中用 $ docker-compose exec nginx-proxy cat /etc/nginx/conf.d/default.conf 我得到这个结果: server {
location / {
root /app;
index index.html;
try_files $uri $uri/ /index.html;
}
如果我在容器中用
$ docker-compose exec nginx-proxy cat /etc/nginx/conf.d/default.conf
我得到这个结果:
server {
server_name _; # This is just an invalid value which will never trigger on a real hostname.
listen 80;
access_log /var/log/nginx/access.log vhost;
return 503;
}
# xx.example.services
upstream xx.example.services {
## Can be connected with "nginx-proxy" network
# examplecontainer1
server 172.18.0.4:80;
}
server {
server_name xx.example.services;
listen 80 ;
access_log /var/log/nginx/access.log vhost;
location / {
proxy_pass http://xx.example.services;
include /etc/nginx/vhost.d/default_location;
}
}
# yy.example.services
upstream yy.example.services {
## Can be connected with "nginx-proxy" network
# examplecontainer2
server 172.18.0.2:80;
}
server {
server_name yy.example.services;
listen 80 ;
access_log /var/log/nginx/access.log vhost;
location / {
proxy_pass http://yy.example.services;
include /etc/nginx/vhost.d/default_location;
}
}
如果我检查/etc/nginx/vhost.d/default_location的内容,它正是我在开头键入的内容,所以这很好
然而,当我去xx.example.services时,我得到了一个403
据我所知,这意味着找不到index.html文件,但如果我将其执行到容器和cat app/index.html中,它确实存在
我已检查所有容器是否在同一网络上
我正在用这个命令运行我的容器
docker run -d --name examplecontainer1 --expose 80 --net nginx-proxy -e VIRTUAL_HOST=xx.example.services my-container-registry
更新
我检查了nginx代理容器的日志,发现以下错误消息:
[错误]29#29:*1目录索引“/app/”被禁止
尝试按照删除$uri/但这给我留下了重定向周期。现在我想看看我是否可以设置正确的权限,但我正在努力
我遗漏了什么?您好,很简单,您的容器遗漏了/app/index.html,在它们里面我的问题是一个基本的误解,即反向代理可以进入我容器的文件系统,正如jwilder自己所说的那样
因此,在我的例子中,反向代理上的默认位置是不必要的。相反,我可以简单地让它指向我的容器,让容器中的nginx配置确定我的应用程序的位置。那么,当我编写“docker exec examplecontainer1 cat app/index.html”以及该容器的配置或文件的权限时,我如何查看内容?