Django、Apache和Nginx的配置
我已经在Apache+mod_wsgi上安装了Django应用程序。为了提供静态文件,我正在使用Nginx,正如Django项目网站上建议的那样Django、Apache和Nginx的配置,django,apache,nginx,mod-wsgi,Django,Apache,Nginx,Mod Wsgi,我已经在Apache+mod_wsgi上安装了Django应用程序。为了提供静态文件,我正在使用Nginx,正如Django项目网站上建议的那样 Apache在端口8081上运行,nginx在端口80上运行。现在有人建议我的配置是错误的,我应该改变Apache和Nginx的角色。我不知道为什么会这样。如果我的配置确实是错误的,为什么django网站会建议使用错误的方法?您链接到的django文档不建议您使用apache作为反向代理。他们只是建议您使用一个单独的web服务器,所以我想说文档在这个问
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为您的站点提供服务,那么您可以在端口8081上使用nginx侦听,在另一个端口上使用apache侦听
关键是,apache位于某个不知名的端口,只服务于从nginx发送给它的请求,而静态文件服务由nginx处理 在端口80上使用Nginx是安全的。想和大家分享一下有人说apache是更好的反向代理的地方吗?基准测试是关键。当我设置应用程序时,我在so和sf上发布了问题。我在这两页上都得到了相似的回答。坦白地说,我很困惑。或者我把整个服务器的概念搞错了。由于Django是在Apache上运行的,为了服务于静态媒体,我必须通过Apache反向代理才能到达nginx。所以我确实在apache配置文件中使用了反向代理。例如,我的主应用程序位于:。在django模板中,我从nginx检索静态文件。所以我猜apache在前面(而不是nginx,正如你在回答中所说的)。或者我把我的概念颠倒了。端口80是HTTP端口,所以访问example.com就是服务器监听端口80的方式。在你的情况下,它是nginx。然后,Nginx会将不到您的媒体文件夹的请求代理到8081上的apache“Nginx会将不到您的媒体文件夹的请求代理到8081上的apache”——您可以详细说明一下吗。就apache/nginx而言,我是一个noob。当然,我没有为任何类型的代理配置Nginx。让我更新帖子:)你是对的,我假设端口80是你的反向代理,因为否则你的用户必须输入端口号才能访问你的站点。哦,现在我明白了。我正在从apache转向nginx,而它应该是另一种方式。谢谢