配置Django,Apache和Nginx

时间:2011-02-03 16:11:04

标签: django apache nginx mod-wsgi

我在Apache + mod_wsgi上设置了我的Django应用程序。根据Django项目网站的建议,我正在使用Nginx提供静态文件。 http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/

Apache在端口8081上运行,nginx在端口80上运行。现在有人建议我的配置错误,我应该反转Apache和Nginx的角色。我不确定为什么会这样。如果确实我的配置错了,为什么django网站会提出错误的方法?

1 个答案:

答案 0 :(得分:12)

您链接的django文档不建议您使用apache作为反向代理。他们只是建议你使用一个单独的网络服务器,所以我说文档不清楚这个主题 - 他们并没有暗示任何错误的

我的初步答案是假设您将nginx作为反向代理,因为端口80是HTTP端口,当浏览器尝试转到没有指定端口的URL时使用的端口。

通过快速谷歌搜索设置nginx + apache有很多完整的指南,但这里是设置nginx的要点:

location / {
        # proxy / requests to apache running django on port 8081
        proxy_pass         http://127.0.0.1:8081/;
        proxy_redirect     off;
    } 

location /media/ { 
        # serve static media directly from nginx
        root   /srv/anuva_project/www/;
        expires 30d;
        break;
    }

您需要做的就是从apache配置中删除代理行,然后将代理语句添加到您的nginx.conf中。

如果您真的想从端口8081为您的站点提供服务,您可能会在端口8081上监听nginx,并让apache在另一个端口上侦听。

关键是,apache位于一个不起眼的端口,只提供从nginx发送给它的请求,而静态文件服务由nginx处理。