我不是伸手党, google 了很久没有找到应该如何写。
想实现的效果:
除指定的 xyz.abc.com 外,其他访问任何 *.abc.com 的请求(包括 http://abc.com )都跳转到 www.abc.com 上。
求高手不吝赐教……或给个思路。
1
predator 2015 年 11 月 17 日 server {
listen 80; server_name xyz.abc.com; #blabla...... } server { listen 80; server_name www.abc.com; # blabla...... } server { listen 80; server_name *.abc.com; return 301 http://www.abc.com$request_uri; } |
2
bitpp 2015 年 11 月 17 日 |
5
ryd994 2015 年 11 月 17 日 via Android |
6
roychan 2015 年 11 月 17 日 |
7
1tkWUUVLeu2UXyh5 2015 年 11 月 17 日
马克
|
8
TrustyWolf 2015 年 11 月 17 日
咱的思路是,默认虚拟主机,也就是 server_name 是 localhost , 301 至 www.
然后新建 xyz 的主机,解析域名的时候泛解析。 这样应该最简单。 |
9
zsen 2015 年 11 月 18 日 server{
listen 80 default_server; server_name _; return 301 http://www.abc.com$request_uri; } server { listen 80; server_name xyz.abc.com; #blabla...... } server { listen 80; server_name www.abc.com; # blabla...... } |
11
predator 2015 年 11 月 18 日 @zsen 按照 nginx 配置的常规习惯,最后一个 server 段一般用来作“ catch all ”处理
官方文档的 sample 是这样的 server { listen 80 default_server; server_name _; return 444; } 不建议偷懒用这个来接受一切域名,可以先写一段 server_name *.abc.com *.def.net *.ghijk.org; ——所有你定义的合法域名 return 301 http://www.abc.com$request_uri; ——全部跳转去 www.abc.com ,或别的什么处理 最后再写一段 catch all server 返回 444 来拒绝可能的恶意域名指向。 |