我不是伸手党, google 了很久没有找到应该如何写。
想实现的效果:
除指定的 xyz.abc.com 外,其他访问任何 *.abc.com 的请求(包括 http://abc.com )都跳转到 www.abc.com 上。
求高手不吝赐教……或给个思路。
1
predator 2015-11-17 10:05:23 +08:00 3
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
fyp0414 2015-11-17 10:13:34 +08:00 1
|
5
ryd994 2015-11-17 11:10:37 +08:00 via Android 4
|
6
roychan 2015-11-17 11:51:22 +08:00 1
|
7
zhenhua2340 2015-11-17 14:11:25 +08:00
马克
|
8
TrustyWolf 2015-11-17 17:10:04 +08:00
咱的思路是,默认虚拟主机,也就是 server_name 是 localhost , 301 至 www.
然后新建 xyz 的主机,解析域名的时候泛解析。 这样应该最简单。 |
9
zsen 2015-11-18 09:17:16 +08:00 1
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 12:45:18 +08:00 1
@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 来拒绝可能的恶意域名指向。 |