Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django、Apache和Nginx的配置_Django_Apache_Nginx_Mod Wsgi - Fatal编程技术网

Django、Apache和Nginx的配置

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+mod_wsgi上安装了Django应用程序。为了提供静态文件,我正在使用Nginx,正如Django项目网站上建议的那样


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,而它应该是另一种方式。谢谢