Nginx - 为共享相同声明的每个子域提供不同的图标

问题描述 投票:0回答:1

我有 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;
    }
}

我可以为每个网站使用不同的图标,而不创建单独的声明吗

谢谢

nginx alias favicon server-name
1个回答
0
投票

当然。您可以使用某种自动主机到文件名转换,例如

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 配置中。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.