我已经在Apache+mod_wsgi上设置了Django应用程序。为了提供静态文件,我正在使用Nginx,正如Django项目网站建议的那样。http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/
Apache运行在8081端口,Nginx运行在80端口。现在有些人建议我的配置是错误的,我应该颠倒Apache和Nginx的角色。我不确定为什么会这样。如果我的配置确实有问题,为什么Django网站会建议错误的方法呢?
我已经在Apache+mod_wsgi上设置了Django应用程序。为了提供静态文件,我正在使用Nginx,正如Django项目网站建议的那样。http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/
Apache运行在8081端口,Nginx运行在80端口。现在有些人建议我的配置是错误的,我应该颠倒Apache和Nginx的角色。我不确定为什么会这样。如果我的配置确实有问题,为什么Django网站会建议错误的方法呢?
您提供的Django文档并没有建议您使用Apache作为反向代理。他们只是建议您使用单独的Web服务器,因此我认为该文档在这个问题上不够清晰——它们并没有建议任何错误的内容。
我的初步回答是假设您使用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端口提供网站服务,你可以让nginx监听8081端口,而让apache监听不同的端口。
关键是,Apache位于某个隐蔽的端口上,仅为从nginx发送给它的请求提供服务,而静态文件服务由nginx处理。