docker上运行的Nginx上的404(uwsgi)

docker上运行的Nginx上的404(uwsgi),nginx,flask,docker,uwsgi,Nginx,Flask,Docker,Uwsgi,我一直在和这件事做斗争,但我的头脑无法摆脱它 我有一个简单的Dockerfile,它可以工作,我使用supervisorORD作为命令启动nginx和uwsgi。它完成了任务,但我得到了404。因此,我要做的是用/bin/bash启动docker,然后手动启动并调试,例如: sudo docker run -t -i -p 8095:80 myimage /bin/bash 这就是我的nginx配置(在站点中可用,然后在站点中启用链接): 这是我的uwsgi ini: [uwsgi] mod

我一直在和这件事做斗争,但我的头脑无法摆脱它

我有一个简单的Dockerfile,它可以工作,我使用supervisorORD作为命令启动nginx和uwsgi。它完成了任务,但我得到了404。因此,我要做的是用
/bin/bash
启动docker,然后手动启动并调试,例如:

sudo docker run -t -i -p 8095:80  myimage /bin/bash
这就是我的nginx配置(在站点中可用,然后在站点中启用链接):

这是我的uwsgi ini:

[uwsgi]
module = wsgi

master = true
processes = 5


socket = /WikiRockWord2Vec/WikiRockWord2Vec.sock
chmod-socket = 777
vacuum = true
uid = www-data

die-on-term = true
套接字确实已创建,我已将权限更改为777,以确保所有nginx都可以访问。但nginx似乎并没有发送到上游

浏览localhost:8095会显示nginx主页,但任何其他路由都会返回404Nginx错误日志为空

我已经确认nginx读取.conf(通过添加拼写错误并查看nginx日志中的错误),但是更改套接字位置没有任何影响,就好像它根本不关心该部分一样在类似的情况下,在我的ubuntu盒上,当sock文件不存在或存在权限问题时,我会在日志中得到502和一些提示。但在这里我什么也没有得到,好像UWSGI没有针对NGINX进行配置。


我迷路了,你能帮忙吗?我是否缺少nginx中的模块配置(类似于apache)?我是nginx的新手

404可能是因为您的
nginx conf
文件的
server
块不正确,我想是因为您的
server\u name
部分不正确

这是我修改过的版本,你可以检查它是否有效

server {
    listen 80 default_server;

    location / {
        uwsgi_pass unix:///WikiRockWord2Vec/WikiRockWord2Vec.sock;
        include uwsgi_params;
    }
}

配置Nginx、uWSGI、Supervisord等(仅针对Flask应用程序)可能很困难,因此我制作了一个公共(开源)Docker映像,其中包含了可以用来构建Python Flask web应用程序的所有细节

它有uWSGI来运行应用程序,Nginx来服务HTTP,Supervisord来控制它们,所以你不必学习如何安装和配置所有这些来构建你的Python Flask web应用程序

uWSGI和Nginx似乎是部署Python web应用程序的一种更健壮(而且性能更好)的方法。以下是基准测试:

甚至可以使用一些模板项目来引导您自己的项目。而且,您不必克隆整个项目或其他东西,您可以将其用作基础映像

码头中心:


GitHub:

谢谢!我不得不删除默认的conf,因为它是冲突的,但与此相比这很容易。不应该是1 docker 1 service?,在您的情况下,您有1 docker和多个服务running@EsseTi根据经验法则,您应该“每个容器有一个进程”。例如,这有助于在不同容器中隔离应用程序及其数据库。但是,如果您希望采用“微服务”方法,您可能希望在一个容器中有多个进程,如果它们都与同一个“服务”相关,并且您可能希望在同一个容器中包含Flask代码、uWSGI和Nginx(还可能在数据库中运行另一个容器)。选中此项:
server {
    listen 80 default_server;

    location / {
        uwsgi_pass unix:///WikiRockWord2Vec/WikiRockWord2Vec.sock;
        include uwsgi_params;
    }
}