我已经在nginx下配置了一个vhost:
server {
listen 80;
server-tokens off;
access_log /var/log/nginx/api.example.com.access.log;
error_log /var/log/nginx/api.example.com.error.log;
index index.html index.htm;
server_name api.example.com;
autoindex on;
location / {
include uwsgi_params;
uwsgi_pass unix:/var/www/api.example.com/xxx.sock;
}
}
此文件位于sites-available
和sites-enabled
。
我已配置uwsgi
因此:
[uwsgi]
chmod-socket = 666
socket = /var/www/api.example.com/xxx.sock
processes = 5
threads = 10
master = True
module = xxx
callable = app
chdir = /var/www/api.example.com
venv = /home/xxx/.virtualenvs/xxx
thunder-lock = True
uid = www-data
gid = www-data
plugins = http,python
vhost = True
我可以让uwsgi和nginx成功启动,但是当我转到http://api.example.com时,我总是得到一个nginx 404.我认为他们都是通过相同的套接字进行通话,因为没有错误发生在它。我还可以看到在/var/www/api.example.com/
和/var/www/api.example.com/app
下生成的.pyc文件,我保留了我的观点和模型。
我该如何调试?
答案 0 :(得分:1)
不确定,但这个nginx conf可能有用。如果没有,请查看nginx和uwsgi日志。
server {
listen 80;
server_name api.xxxx.com;
charset utf-8;
client_max_body_size 250M;
root /var/www/api.xxx.com/;
index index.html index.htm;
location / {
try_files $uri $uri/ @proxy;
}
location @proxy {
include uwsgi_params;
uwsgi_pass unix:/var/www/api.xxx.com/xxx.sock
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
答案 1 :(得分:1)
我发现了问题:Flask和uwsgi有不同的应用程序名称。当我回复时,他们上面有相同的名字,我忘了重新启动服务器。
答案 2 :(得分:1)
首先确保你的nginx有HttpUwsgiModule,你可以通过运行命令“nginx -V
”来检查它。它将列出所有已配置的模块。