2

我们在 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 的可扩展性或效率有影响吗?即:对所有事情都使用一个服务器块。

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

4

0 回答 0