Heim > Fragen und Antworten > Hauptteil
Angenommen, es gibt 5 Domänennamen der zweiten Ebene:
aaa.example.com
bbb.example.com
ccc.example.com
ddd.example.com
eee.example.com
Bei der Konfiguration von Nginx sieht das Servermodul so aus:
server {
listen 443 ssl http2;
server_name aaa.example.com;
root /var/www/aaa.example.com/public;
index index.php index.html index.htm;
location / {
root /var/www/aaa.example.com/public;
try_files $uri $uri/ /index.php?$query_string;
index index.php index.html index.htm;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/dev/shm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#...
#...
#...
}
Frage:
1. Es gibt 5 Domänennamen der zweiten Ebene. Muss ich 5 Servermodule schreiben? Kann ich ein Allzweck-Servermodul schreiben, das nur eines verwendet?
2. Wenn 5 Servermodule geschrieben werden, können die location ~ .php${ }
模块是一样的,这个location ~ .php${ }
Module in jedem Servermodul nur einmal zum Teilen geschrieben werden? Das heißt, kann es in das http-Modul verschoben werden, das obere Modul des Servermoduls?
3. In vielen Beispielen müssen Root und Index zweimal geschrieben werden, einmal im Server und noch einmal im Modul der nächsten Ebene location / { }
.
我想大声告诉你2017-05-16 17:11:58
server_name ~^(?<site>(aa|bb|cc)\.example\.com)$;
root /var/www/$site/public; # location 里的root如果一样,可以不需要了,index也一样,大多数人是复制的
巴扎黑2017-05-16 17:11:58
1.当你的5个域名指向同一根目录,表示同一站点时,server_name可以指定多个域名,用空格分隔;当你的5个域名表示不同站点,就要配置多个server段,通常用include指令来引入多个conf文件,每个域名是一个conf文件。
2.location 指令只能是在server、location里;详见官方文档说明:
3.location里的root index 可以共用server里的root index.