【发布时间】:2015-07-17 08:29:07
【问题描述】:
我一直在与这个作斗争,无法理解它。
我有一个可以运行的简单 Dockerfile,我使用 supervisord 作为 CMD 来启动 nginx 和 uwsgi。它完成了这项工作,但我得到了 404。所以我要做的是使用/bin/bash 启动 docker 并手动启动和调试,例如:
sudo docker run -t -i -p 8095:80 myimage /bin/bash
这是我的 nginx 配置文件(在站点可用,然后是站点启用的链接):
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
确实创建了套接字,并且我已将权限更改为 777 以确保所有 nginx 都可以访问。但似乎 nginx 无论如何都不会发送到上游。
浏览到 localhost:8095 会找到 nginx 主页,但任何其他路由都返回 404。Nginx 错误日志为空。
我已经确认 nginx 读取了 .conf(通过添加拼写错误并在 nginx 日志中查看错误)但是更改套接字位置没有影响,好像它甚至不关心关于那部分。 在我的 ubuntu 盒子上类似的情况下,当 sock 文件不存在或存在权限问题时,我会在日志中得到 502 和一些提示。 但是在这里我什么也没得到,好像 UWSGI 没有针对 NGINX 进行配置。
我迷路了,你能帮忙吗?我是否缺少 nginx 中的模块配置(类似于 apache)?我是 nginx 新手。
【问题讨论】: