首页 文章

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

提问于
浏览
4

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

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

我可以直接在apache上托管php文件,但是端口80由nginx承担 . 可以说我想使用apache在blog.XXXX.com上托管一个基于php的博客应用程序 - wordpress?和我在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/;
        }
   }

1 回答

  • 1

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

    Don 't select a reserved port and ensure that it' s open(并且你可以访问它.Unix有一个端口范围,通常在_1560125中定义,如果你选择ipv4,你可能已经通过你的Nginx配置来判断)

    For Apache configuration:

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

    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>
    

    您可以通过两种方式执行此操作,一种来自同一个域,另一种来自子域 .

    For NGINX configuration:

    From the same domain:

    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>/;
        }
    }
    

    From a subdomain:

    #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>/;
        }
    }
    

    Note: 您不能在VirtualHost中定义根目录

    一旦你编辑了配置文件,重新启动Apache,然后重新启动Nginx,它应该工作 .

相关问题