我有一个 Debian Web 服务器,其主要/var/www/mymainwebsite
服务在 URL 上http(s)://mydomain.com
,并且许多独立的 Web 项目也在/var/www
( /var/www/mywebsite1
、/var/www/website2
等) 中,必须在 URL http(s)://mydomain.com/mywebsite1
、http(s)://mydomain.com/mywebsite2
等上提供服务。
因此,mydomain.com 的 vhost 上的服务器指令包含许多针对子网站的指令,其中的指令location
几乎相同(因为nginx 文档表示,当 location 与别名指令值的最后部分匹配时,最好使用 root 指令而不是别名指令)。其中一些包含一些 PHP 和重写规则,但大多数不包含。root
看起来像这样:
server {
server_name mydomain.com;
listen 443 quic;
listen 443 ssl;
root /var/www/mymainwebsite;
index index.html index.htm index.php;
try_files $uri $uri/ =404;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
location /mywebsite1 {
root /var/www/;
}
location /mywebsite2 {
root /var/www/;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
rewrite ^/mywebsite2/(.*)\.html$ /mywebsite2/index.php?hash=$1 last;
}
location /mywebsite3 {
root /var/www/;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
rewrite ^/mywebsite3/(.*)\.html$ /mywebsite3/index.php?id=$1 last;
}
location /mywebsite4 {
root /var/www/;
}
...
location /mywebsite19 {
root /var/www/;
}
error_log /var/www/mydomain.log warn;
}
由于大多数指令都是相似的,有什么方法可以优化和/或避免在此虚拟主机中重复?