配置Django,Apache和Nginx

Neo*_*Neo 8 apache django mod-wsgi nginx

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

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

Yuj*_*ita 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;
    }
Run Code Online (Sandbox Code Playgroud)

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

如果你真的想从端口8081服务你的站点,你可能有nginx侦听端口8081并让apache侦听不同的端口.

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