[英]nginx error 403 - directory index is forbidden
我正在嘗試將docker nginx
與docker flask
連接起來。 這是我的項目的結構:
.
├── storage
│ ├── nginx
│ │ └── static
│ │ └── image.gif
└── web
└── flask
├── app
│ ├── run.py
│ └── templates
│ └── index.html
├── conf
│ ├── nginx-default.conf
│ ├── nginx-flask.conf
│ └── requirements.txt
└── Dockerfile
盡管curl 127.0.0.1:50
和curl 127.0.0.1:80/static/image.gif
可以正常工作,但是當我curl 127.0.0.1
時,我收到“ 403 Forbidden”錯誤。 更具體地說, nginx
給出以下錯誤:
2016/03/05 17:54:37 [error] 8#8: *1 directory index of "/usr/share/nginx/html/" is forbidden, client: 172.17.0.1, server: localhost, request: "GET / HTTP/1.1", host: "localhost"
172.17.0.1 - - [05/Mar/2016:17:54:37 +0000] "GET / HTTP/1.1" 403 169 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0" "-"
我創建這樣的容器:
docker create \
-v $ROOT/web/flask/app/:/web/flask/app/ \
--name flask_data flask:0.1
docker run \
-d -p 127.0.0.1:50:50 \
--volumes-from flask_data \
--name flask_service flask:0.1
docker create \
-v $ROOT/storage/nginx/:/usr/share/nginx/html/ \
--name nginx_data nginx:1.9
docker run \
-v $ROOT/web/flask/conf/nginx-flask.conf:/etc/nginx/conf.d/nginx-flask.conf \
-v $ROOT/web/flask/conf/nginx-default.conf:/etc/nginx/conf.d/default \
-d -p 127.0.0.1:80:80 \
--volumes-from nginx_data \
--link flask_service:flask_service_alias \
--name nginx_service nginx:1.9
Dockerfile
在哪里:
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y --no-install-recommends python-pip python-dev
COPY . /web/flask/
RUN pip install -r /web/flask/conf/requirements.txt
CMD gunicorn run:app --workers=4 --bind=0.0.0.0:50 --log-level=debug --timeout=43200 --chdir=/web/flask/app/
和requirements.txt
是:
gunicorn==19.4.5
Flask==0.10.1
Flask-Redis==0.1.0
Flask-SQLAlchemy==2.1
Flask-MongoAlchemy==0.7.2
nginx-default
為空,而nginx-flask
為:
server {
listen 80;
charset utf-8;
location /avatar {
alias /usr/share/nginx/html/avatar;
}
location /scan {
alias /usr/share/nginx/html/scan;
}
location /static {
alias /usr/share/nginx/html/static;
}
location / {
proxy_pass http://flask_service_alias:50/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
有任何想法嗎?
看起來可能正在發生什么事,就是nginx
映像中的default.conf
文件接管了/
位置。 您的nginx run命令具有:
-v $ROOT/web/flask/conf/nginx-default.conf:/etc/nginx/conf.d/default \
這應該覆蓋default.conf
而不是default
。 就目前而言,它只是添加了另一個空白default
文件,並保留了default.conf
文件,該文件的位置為/
。
您的靜態路由確實可以工作,因為nginx-flask.conf
有一個到/static
的顯式路由,您可以顯式調用該文件。 您在/
位置上得到403
,因為默認情況下禁用索引(由autoindex
選項控制)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.