我有 2 个网站:
abc.domain.com
和 def.domain.com
作为子域,它们共享相同的证书和相同的根文件夹。本质上,他们访问相同的网站,但针对不同的客户。
server {
listen 443 ssl;
server_name abc.domain.com def.domain.com;
root /var/www/project;
location /favicon.ico {
alias /var/www/project/src/favicon_abc.ico;
#use /var/www/project/src/favicon_def.ico for def.domain.com;
}
}
我可以为每个网站使用不同的图标,而不创建单独的声明吗
谢谢
当然。您可以使用某种自动主机到文件名转换,例如
server {
...
server_name abc.example.com def.example.com;
...
location = /favicon.ico {
# will search for /var/www/project/src/favicon_abc.example.com.ico,
# /var/www/project/src/favicon_def.example.com.ico, etc.
alias /var/www/project/src/favicon_$host.ico;
}
...
或者甚至更复杂的东西,例如(使用正则表达式)
server {
...
server_name ~(?<subdomain>.*)\.example\.com$;
...
location = /favicon.ico {
# will search for /var/www/project/src/favicon_abc.ico,
# /var/www/project/src/favicon_def.ico, etc.
alias /var/www/project/src/favicon_$subdomain.ico;
}
...
map
指令对匹配列表进行硬编码(应在 http
上下文中定义,而不是在 server
上下文中定义):
map $host $icon {
abc.example.com favicon_abc.ico;
def.example.com favicon_def.ico;
...
default favicon.ico; # if none of above match
}
server {
...
server_name example.com *.example.com;
...
location = /favicon.ico {
alias /var/www/project/src/$icon;
}
...
include
指令并使用一些第三方工具填充这样的列表,然后将其添加到 nginx 配置中。