Django 404从本地主机访问时出错:NGINX uWSGI

Django 404从本地主机访问时出错:NGINX uWSGI,django,nginx,docker,uwsgi,Django,Nginx,Docker,Uwsgi,我正在尝试配置一个docker compose示例,其中nginx(在容器中运行)前面有3个容器,在uwsgi中运行python应用程序 通过容器的docker ip尝试nginx时,应用程序可以访问,没有任何问题;但是,当尝试使用localhost:9999从主机url(nginx使用端口9999绑定到主机)访问它时,我可以访问nginx页面,但是任何应用程序url或/admin/uri都显示404错误 我已经通过论坛和Stackoverflow答案吨没有任何运气,有人能帮我解决这个问题吗 更

我正在尝试配置一个docker compose示例,其中nginx(在容器中运行)前面有3个容器,在uwsgi中运行python应用程序

通过容器的docker ip尝试nginx时,应用程序可以访问,没有任何问题;但是,当尝试使用localhost:9999从主机url(nginx使用端口9999绑定到主机)访问它时,我可以访问nginx页面,但是任何应用程序url或/admin/uri都显示404错误

我已经通过论坛和Stackoverflow答案吨没有任何运气,有人能帮我解决这个问题吗

更多信息附于下文:

我的docker compose文件如下所示:

version:  '2'
services:
  nginxlb:
    build:  ./nginx
    ports:
      - "9999:80"
    links:
      - my-app1:my-app1
      - my-app2:my-app2
      - my-app3:my-app3
    volumes:
      - ./logs/nginx/:/opt/my-logs/nginx/
  my-app1:
    build: ./my
    expose:
      - 8080
      - 8081
    volumes:
      - ./logs/node1:/opt/my-logs/node1/
  my-app2:
    build: ./my
    volumes:
      - ./logs/node2/:/opt/my-logs/node2/
    expose:
      - 8080
      - 8081
  my-app3:
    build: ./my
    volumes:
      - ./logs/node3:/opt/my-logs/node3
    expose:
      - 8080
      - 8081
nginx的站点启用配置如下所示:

upstream node-app {
      least_conn;
      server my-app1:8080;
      server my-app2:8080;
      server my-app3:8080;
}

server {
      listen 80 default;
      server_name _;
      location / {
        proxy_pass http://node-app;
        include /etc/nginx/uwsgi_params;
      }
}
编辑这是我的NGINX Docker文件,我没有对默认的NGINX.conf文件做任何更改

From nginx

MAINTAINER  DevOps

# Update the container
RUN apt-get update

# Create directories and set working directory
RUN mkdir /opt/myapp/
RUN mkdir /opt/myapp/django-static/
RUN mkdir /opt/myapp/django-media/
RUN mkdir /opt/myapp/webroot/
run mkdir -p /opt/myapp-logs/nginx/
WORKDIR /opt/myapp/

# Copy configs and code to Container
ADD config/nginx.conf /etc/nginx/nginx.conf
ADD config/nginx-site.conf /etc/nginx/sites-enabled/nginx.conf
ADD config/uwsgi_params /etc/nginx/uwsgi_params

EXPOSE 80

默认站点的Nginx配置文件包括以下行:

    server_name  localhost;
因此,当您转到
http://localhost:9999
;此外,nginx不处理启用的
/etc/nginx/sites
目录及其内容;从默认的
nginx.conf

    include /etc/nginx/conf.d/*.conf;
修改Dockerfile-而不是:

ADD config/nginx-site.conf /etc/nginx/sites-enabled/nginx.conf
使用:


404表示nginx没有到达您的
服务器
nginx配置块;也许默认nginx配置文件中的参数会覆盖您的配置?您是否尝试删除它?如果没有帮助,请发布您的nginx/Dockerfile的内容。nginx服务器在通过nginx容器ip访问时提供uwsgi内容(通过“sudo docker inspect | grep IPAddress”获得)。刚刚添加了我的nginx Dockerfile,我正在考虑是否正确使用compose文件进行docker联网。。
RUN rm /etc/nginx/conf.d/default.conf
ADD config/nginx-site.conf /etc/nginx/conf.d/nginx.conf