nginx上的django应用程序与apache

时间:2015-05-17 18:18:15

标签: django apache nginx

我正在为我的django应用程序安装生产服务器,但我无法使其正常工作。我的配置文件可以找到here 基本上我已经在我的php应用程序的端口80上安装并运行了apache2。除了apache2之外,我想用uwsgi在nginx上运行我的django应用程序。所以我在端口8000上运行nginx 当我打开http://IP:8000/时,我可以正确地看到我的网站 的 1。但是如何使用域名进行设置?
我已将dns中的A标记设置为IP。现在它打到apache2"它可以工作"页面,因为它默认命中端口80?所以我需要代理将所有请求传递给我的domain.com?这样的事情?
/etc/apache2/sites-enabled/domain.com

<VirtualHost *:80>
  ServerName domain.com

  ProxyPreserveHost On
  ProxyPass / http://IP:8000
</VirtualHost>

它不起作用,那么如何将所有域请求从apache传递到nginx?
2。如何添加其他域名? (新应用)
我是否只为新应用创建新的套接字文件,将其保留在端口8000上,nginx将根据域名决定使用哪个conf文件?

我还没有找到任何类似的教程,nginx通常处理静态文件并向apache2发送请求。但是我想以其他方式。

2 个答案:

答案 0 :(得分:1)

感谢您的回答。为了使它工作,我不得不像这样设置apache代理:

<VirtualHost *:80>
  ServerName www.domain.com

  ProxyPreserveHost On

  ProxyPass /static http://XX.XX.XX.XX:8000/static
  ProxyPassReverse /static http://XX.XX.XX.XX:8000/static


  ProxyPass / http://XX.XX.XX.XX:8000
  ProxyPassReverse / http://XX.XX.XX.XX:8000

  RewriteEngine On

  RewriteCond %{REQUEST_URI} ^(.(?!\.css|js|gif|png|jpg|ico))*$
  RewriteRule /(.*) http://XX.XX.XX.XX:8000/$1 [P,L]
</VirtualHost>

并启用proxy_http:

sudo a2enmod proxy  
sudo a2enmod proxy_http  
sudo service apache2 restart

答案 1 :(得分:0)

<强> 1。如何使用域名进行设置? 在nginx conf文件的服务器块中设置server_name:

    server {
        listen 8000;
        server_name www.my-django-domain-one.foobar;
        #rest of your config regarding forwarding to django...
    }

您的网站将在http://www.my-django-domain-one.foobar:8000上提供。

<强> 2。你如何添加另一个域名? (新应用) Nginx不会根据conf文件名做出任何决定。创建一个新的conf文件或使用现有的文件(仅在你想如何组织你的配置的意义上)

    server {
        listen 8000;
        server_name www.my-django-domain-two.foobar;
        #rest of your config regarding forwarding to django...
    }

但是,我建议只涉及一个Web服务器的方法。关于哪些使用的意见当然不同,但它们都可以做你想要实现的目标。您为设置添加了不必要的复杂性(例如,两个服务器要保持修补),并且 - 根据您的流量 - 它甚至可能对您的性能产​​生重大影响。

查看此tutorial以了解如何使您的php应用程序与nginx和php-fpm一起使用。