我们在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的可扩展性或效率产生影响?即:为一切使用一个服务器块。
一般使用的最佳解决方案是什么?