【发布时间】:2014-06-14 16:24:13
【问题描述】:
我正在关注 this uwsgi guide 设置 nginx/uwsgi 以让 1 个烧瓶应用程序运行“www”子域,另一个烧瓶应用程序运行“api”子域。我的nginx.conf:
worker_processes 1;
events {
worker_connections 1024;
}
http {
access_log /path/to/access_nginx.log combined;
error_log /path/to/error_nginx.log crit;
include mime.types;
sendfile on;
server {
server_name api.example.com;
listen 14265;
location / {
include uwsgi_params;
uwsgi_param UWSGI_SCRIPT wsgi_api;
uwsgi_pass unix:///path/to/api.sock;
}
}
server {
server_name www.example.com;
listen 14265;
location / {
include uwsgi_params;
uwsgi_param UWSGI_SCRIPT wsgi;
uwsgi_pass unix:///path/to/wsgi.sock;
}
}
}
为了启动 uwsgi,我这样做了:
#!/bin/bash
APPNAME=nginx
# Start uwsgi
${HOME}/webapps/${APPNAME}/bin/uwsgi \
--uwsgi-socket "${HOME}/webapps/${APPNAME}/wsgi.sock" \
--master \
--workers 1 \
--max-requests 10000 \
--harakiri 60 \
--daemonize ${HOME}/webapps/${APPNAME}/uwsgi.log \
--pidfile ${HOME}/webapps/${APPNAME}/uwsgi.pid \
--vacuum \
--python-path ${HOME}/webapps/${APPNAME}
# Start nginx
${HOME}/webapps/${APPNAME}/bin/nginx
当我访问www.example.com 时,它按预期工作。但是,我收到 api.example.com 的 502 错误。要修复 502 错误,我可以将 nginx.conf 中的 api.sock 更改为 wsgi.sock,但是当我访问 api.example.com 时,它会给我 www.example.com 的页面(即使 wsgi.py 和 wsgi_api.py 不同) .
编辑:我找到的在 nginx/uwsgi 上设置多个子域的示例(包括我链接到的那个)都显示了如何使用静态站点创建子域。我找不到一个显示如何使用 unix 套接字进行操作的。
【问题讨论】:
-
你的 nginx 配置没问题。响应代码“502 Bad Gateway”表示 uWSGI 有问题。查看api应用的日志。
-
@DmitryVakhrushev 我已经检查过了。每个应用程序都可以单独运行,但是当我尝试上述配置时,我会收到一个 502 错误。我还注意到只有 wsgi.sock 被创建,这表明我的 uwsgi 配置错误????
标签: python nginx flask uwsgi webfaction