Nginx和Django-socketio给出了正在使用的地址错误

时间:2014-02-18 23:32:08

标签: nginx amazon-ec2 uwsgi socket.io django-socketio

我正在尝试用uwsgi和nginx设置我的django-socketio,当我跑 sudo uwsgi --ini uwsgi.ini

我收到一条错误消息称地址已被使用。 我知道问题是什么,我认为问题是当我运行sudo uwsgi --ini uwsgi.ini时,它在端口80上创建了一个SocketIOServer,并且由于我的nginx也启动了,它也会侦听端口80.因此,它们是是冲突,但我不知道如何解决它。

有人可以提供帮助。

我的wsgi.py文件如下:

import os
PORT = 80

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

from socketio import SocketIOServer

print 'Listening on port %s and on port 843 (flash policy server)' % PORT
SocketIOServer(('', PORT), application, resource="socket.io").serve_forever()

我的nginx文件看起来像:

upstream django {
    server unix:///tmp/uwsgi.sock;
}

server {
    listen      80;
    charset     utf-8;
    error_log /home/ubuntu/nginxerror.log   ;

    location /static {
        alias /home/ubuntu/project/static;
    }

    location / {
        uwsgi_pass  django;
        include     /etc/nginx/uwsgi_params;
        }
    }

2 个答案:

答案 0 :(得分:0)

我最近在看django-socketio,我记得我只是让socketio听843号端口。 任何理由你需要聆听80& 843?

正在开发中,您可以添加开放端口843,看看这是否解决了您的问题。

答案 1 :(得分:0)

不是在你的wsgi文件中创建一个socketio服务器,而是使用内置的runserver_socketio并使用supervisor在端口9000上启动它,然后让nginx代理请求/socket.io/到端口9000