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

我一直在与此作斗争,无法摆脱困境。

我有一个简单的Dockerfile工作,我使用supervisord作为CMD来启动nginx和uwsgi。 它做的工作,但我回来了404。所以我做的是改为启动docker/bin/bash和手动启动和debugging ,例如:

 sudo docker run -t -i -p 8095:80 myimage /bin/bash 

所以这是我的nginx conf(在站点可用,然后在启用站点的链接):

 server { listen 80; server_name 0.0.0.0; location / { include uwsgi_params; uwsgi_pass unix:/WikiRockWord2Vec/WikiRockWord2Vec.sock; } } 

这是我的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 

套接字没有被创build,我已经改变了777的权限,以确保所有的nginx有权限访问。 但似乎nginx不会发送到上游。

浏览到本地主机:8095带来nginx主页查找,但任何其他路由返回404. Nginx错误日志是空的

我已经确认nginx 读取.conf (通过添加拼写错误,并在nginx日志中看到错误),但更改套接字位置没有影响,就好像它甚至不关心该部分。 在我的Ubuntu的盒子上,当袜子文件不存在或有权限问题时,我得到502和日志中的一些提示类似的情况。 但是在这里,我什么也得不到,好像UWSGI没有configuration成NGINX。

我迷路了,你能帮忙吗? 我在nginx中缺less模块configuration(类似于apache)吗? 我是nginx的新手。

404可能是因为你的nginx conf文件的server块不正确,我想是因为你的server_name部分。

所以这里是我的修改版本,你可以检查它是否工作

 server { listen 80 default_server; location / { uwsgi_pass unix:///WikiRockWord2Vec/WikiRockWord2Vec.sock; include uwsgi_params; } } 

configurationNginx,uWSGI,Supervisord等(以及Flask应用程序)可能很困难,所以我制作了一个公共的(和开源的)Docker镜像,可以用它来构build一个Python Flask Web应用程序。

它有用于运行应用程序的uWSGI,Nginx为HTTP和Supervisord提供服务来控制它们,因此您不必学习如何安装和configuration所有这些来构build您的Python Flask Web应用程序。

看起来像Nginx的uWSGI是部署Python Web应用程序的更强大(并且性能卓越)的方式之一。 这里是基准: http : //nichol.as/benchmark-of-python-web-servers 。

甚至有一些模板项目可以用来引导你自己。 此外,您不必克隆整个项目或其他东西,您可以将其用作基本映像。

Docker Hub: https : //hub.docker.com/r/tiangolo/uwsgi-nginx-flask/

GitHub: https : //github.com/tiangolo/uwsgi-nginx-flask-docker