对多个站点使用一个Nginx服务器块

对多个站点使用一个Nginx服务器块,nginx,Nginx,我们在nginx下有多个Drupal站点(最多12个),我们需要路径为它们提供服务 http://example.com/site1 http://example.com/site2 我认为有两种方法可以做到这一点 1) 创建虚拟子域,以便每个站点可以使用一个服务器块。 注意:我只是在下面的配置中显示相关行 server { listen 80; server_name site1.localhost; root /var/www/site1; location

我们在nginx下有多个Drupal站点(最多12个),我们需要路径为它们提供服务

http://example.com/site1
http://example.com/site2
我认为有两种方法可以做到这一点

1) 创建虚拟子域,以便每个站点可以使用一个服务器块。 注意:我只是在下面的配置中显示相关行

server {
    listen 80;
    server_name site1.localhost;
    root /var/www/site1;
    location ~ \.php$ {
        ...
        fastcgi_pass 127.0.0.1:9000;
    }
}
server {
    listen 80;
    server_name site2.localhost;
    root /var/www/site2;
    location ~ \.php$ {
        ...
        fastcgi_pass 127.0.0.1:9000;
    }
}
server {
    listen 80;
    server_name _;  # _ is used as a catch all domain
    location /site1/ {
        proxy_pass site1.localhost;
    }
    location /site2/ {
        proxy_pass site2.localhost;
    }
}
以上要求我们在/etc/hosts文件中为每个站点添加条目。 例如:127.0.0.1 site1.localhost

我不希望必须全局编辑DNS条目。在我们的环境中进行管理是一件令人头痛的事情(多个云服务器来去匆匆,每个服务器都有多个站点)

2) 为每个站点使用一个带有位置块的服务器块

server {
    listen 80;
    server_name _; # _ is used as a catch all domain
    location /site1/ {
        root /var/www/site1;
        location ~ \.php$ {
            ...
            fastcgi_pass 127.0.0.1:9000;
        }
        ...
    }
    location /site2/ {
        root /var/www/site2;
        location ~ \.php$ {
            ...
            fastcgi_pass 127.0.0.1:9000;
        }
        ...
    }
}
解决方案2)是否对nginx的可扩展性或效率有任何影响?ie:一切都使用一个服务器块


一般使用的最佳解决方案是什么

嘿,你找到解决办法了吗??我面临着一个类似的问题!!:P我的问题是@coderunner:不,我没有进一步了解这个问题。我们目前正在使用选项1。谢谢!!更新!