nginx の下に複数の Drupal サイト (最大 12) があり、それらをパスで提供する必要があります。
http://example.com/site1
http://example.com/site2
これを行うには2つの方法があります。
1) ダミーのサブドメインを作成して、サイトごとに 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) 各サイトのロケーション ブロックで 1 つのサーバー ブロックを使用します。
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 のスケーラビリティまたは効率に影響を与えますか? つまり、すべてに対して 1 つのサーバー ブロックを使用します。
一般的に使用するのに最適なソリューションは何ですか?