【发布时间】:2020-03-23 16:09:01
【问题描述】:
我有nginx 和django(命名为python 容器)的设置。
我可以使用localhost:8000 访问查看首页,但是我无法获取静态文件,也无法使用 API localhost:8000/api/items
我是 nginx 和 django 的新手,所以还是很困惑。
我正在计划这样的环境
普通文件
browser ->8000 -> nginx -> 8001 ->django
静态文件
django ->8000 -> nginx
正确吗???或者我应该在哪里修复??
这些是下面的设置。
docker-composer.yml
version: '3'
services:
python:
container_name: python
build: ./python
command: uwsgi --socket :8001 --module myapp.wsgi --py-autoreload 1 --logto /tmp/mylog.log
expose:
- "8001"
nginx:
image: nginx:1.13
container_name: nginx
ports:
- "8000:8000"
volumes:
- ./nginx/conf:/etc/nginx/conf.d
- ./nginx/uwsgi_params:/etc/nginx/uwsgi_params
- ./nginx/static:/static
depends_on:
- python
app_nginx.conf
upstream django {
ip_hash;
server python:8001;
}
server {
listen 8000;
server_name 127.0.0.1;
charset utf-8;
location /static {
alias /static;
}
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
}
}
server_tokens off;
uwsgi_prams
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
【问题讨论】:
-
for static file django ->8000 -> nginx- 不,django 与此设置中的静态文件无关。 Nginx 应该直接从驱动器为它们提供服务。 -
我明白了...但是现在可以了,我将每个静态文件都放在 nginx /static 文件夹中。
标签: python django docker nginx docker-compose