Nginx:共享同一段配置的子域名如何配置不同网站图标?
可以实现,无需拆分server配置块
你可以通过两种方式在同一个server块内为不同子域名配置不同的favicon.ico:
方法一:使用if指令判断请求域名
直接在/favicon.ico的location块内,通过$host变量判断当前请求的域名,指定对应的图标文件:
server { listen 443 ssl; server_name abc.domain.com def.domain.com; root /var/www/project; location /favicon.ico { if ($host = abc.domain.com) { alias /var/www/project/src/favicon_abc.ico; } if ($host = def.domain.com) { alias /var/www/project/src/favicon_def.ico; } } }
这种方式适合域名数量较少的场景,配置直观简单。
方法二:使用map指令(更优雅的扩展方案)
如果后续可能增加更多子域名,推荐在http块内定义map规则,将域名和对应图标路径绑定,再在server块内引用变量:
http { # 定义域名到favicon路径的映射 map $host $favicon_path { abc.domain.com /var/www/project/src/favicon_abc.ico; def.domain.com /var/www/project/src/favicon_def.ico; # 可继续添加更多域名映射 } server { listen 443 ssl; server_name abc.domain.com def.domain.com; root /var/www/project; location /favicon.ico { alias $favicon_path; } } }
map指令是Nginx官方推荐的变量映射方式,相比多个if指令,性能更优且便于维护。
内容的提问来源于stack exchange,提问作者fractal5
相关产品推荐
相关产品推荐

