同时将nginx设置为apache和gunicorn的代理

我在django中拥有所有代码,因此使用gunicorn来托管django,并使用nginx作为反向代理。 我现在想使用nginx服务器作为反向代理和apache服务器在同一个域(或子域)上托管一些PHP文件。

是否有可能为2台不同的服务器反向代理服务器nginx? (如果gunicorn失败,请尝试apache)

我可以直接在Apache上托管php文件,但端口80由nginx提取。 比方说,我想主办一个基于PHP的博客应用程序 - WordPress的博客.XXXX.com使用Apache? 和我在XXXX.com上使用nginx和gunicorn的常规网站

这里是我当前nginx.conf的相关部分

    server {
        listen   80;
        server_name XXXXX.com;
        root /home/ubuntu/code/;

        location / {
            proxy_pass_header Server;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Scheme $scheme;
            proxy_connect_timeout 120;
            proxy_read_timeout 120;
            proxy_pass http://localhost:8000/;
        }
   }

是的,这是可能的。 您需要将Apache配置为在不同的端口上侦听。

不要选择一个保留的端口并确保它是开放的(并且你可以访问它)Unix有一个端口范围,通常在/proc/sys/net/ipv4/ip_local_port_range如果你选择了ipv4,你的Nginx配置)

对于Apache配置:

编辑你的Apache主配置文件并设置Listen指令,如下所示:

Listen 127.0.0.1:<port number that's open>端口Listen 127.0.0.1:<port number that's open> //使用8080作为端口来启动

然后创建一个VirtualHost,如下所示:

<VirtualHost 127.0.0.1:<port number defined above>>
    config goes here
</VirtualHost>

你可以通过两种方式做到这一点,一个来自同一个域名,另一个来自子域名。

对于NGINX配置:

来自同一个域名:

server {
    listen   80;
    server_name XXXXX.com;

#Django app served using Gunicorn
    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 120;
        proxy_read_timeout 120;
        proxy_pass http://localhost:8000/;
    }
#PHP processed by Apache
    location ~ .php$ {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 120;
        proxy_read_timeout 120;
        proxy_pass http://localhost:<port you configured apache to listen on>/;
    }
}

从一个子域:

#Server block for Django 
server {
    listen   80;
    server_name XXXXX.com;

    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 120;
        proxy_read_timeout 120;
        proxy_pass http://localhost:8000/;
    }
}

#Server block for PHP served using Apache with a subdomain
server {
    listen   80;
    server_name blog.XXXXX.com;

    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 120;
        proxy_read_timeout 120;
        proxy_pass http://localhost:<port you configured apache to listen on>/;
    }
}

注意:您不需要root指令,因为您的应用程序由Gunicorn提供服务或被移交给Apache(您将在VirtualHost中定义一个根目录)

一旦你编辑你的配置文件,重新启动Apache,然后重新启动Nginx,它应该可以工作。

链接地址: http://www.djcxy.com/p/52547.html

上一篇: set nginx as proxy for both apache and gunicorn at the same time

下一篇: What are the advantages of using Node.js vs PHP