nginx错误403 – 目录索引被禁止
我正在尝试将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禁止'错误。 更具体地说, 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" "-"
我创build这样的容器:
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
文件正在接pipe/
位置。 你的nginx运行命令有:
-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
选项控制)。
- 运行Dockerized Django应用程序时,Gunicorn'Worker'引导失败
- 使用nginx作为反向代理时连接被拒绝,而连接上游
- 为什么我的gunicorn Python / Flask工人退出信号术语?
- Flask,Gunicorn,NGINX,Docker:configurationSERVER_NAME和proxy_pass的方法是什么?
- docker nginx无法与web容器build立连接
- 使用Webpack_Loader停滞Django
- Docker nginx无法连接到在单独容器中运行的上游gunicorn
- 无法访问在Docker容器内运行的Flask Web应用程序
- Gunicorn优雅地停靠与docker构成