docker上运行的Nginx上的404(uwsgi)
我一直在和这件事做斗争,但我的头脑无法摆脱它 我有一个简单的Dockerfile,它可以工作,我使用supervisorORD作为命令启动nginx和uwsgi。它完成了任务,但我得到了404。因此,我要做的是用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
/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;
}
}