AMH开源社区

AMH社区 - 开放自由有价值的社区

[分享帖] 不带www301到带www+禁止外部域名解析到主机+禁止IP访问的方法

iseeyo
金牌会员
5371.59 价值分

29,264 次阅读   27 张回复   iseeyo 发表于 2014-11-11 19:07:02
[i=s] 本帖最后由 iseeyo 于 2014-11-12 15:21 编辑 [/i]

ANH论坛独家,其他任何网站都没有的最完整最详细最有用的教程 支持

以test.com和www.test.com为例!!!

方法一:通过if判断实现
前提:最初新建虚拟主机时,“绑定域名”处填写test.com和www.test.com
在amwrite里编辑如下规则
if ( $host = test.com ) { return 301 http://www.test.com$request_uri; } #不带www的域名301转向到带www的域名
if ( $host !~* (.*?).test.com ) { return 444;} #用正则表达式匹配,任何主域不是test.com的解析都转向444,同时也就实现了禁止IP直接访问站点的目的
444为nginx独有的非标准状态码,表示关闭连接且不给客户端发响应头,彻底断绝网站被非法镜像、非法解析、非法反代!
注意:“return 301 http://www.test.com$request_uri”是nginx推荐的方法,论坛里面其他帖子用的“rewrite (.*) http://www.example.org$1;”是过时的方法!!!

方法二:通过server段实现
前提:最初新建虚拟主机时,“绑定域名”处只填写www.test.com即可,千万不要填写test.com
新建一个conf文件(如test.conf),通过ftp上传到“web环境/vhost/”目录,conf文件代码如下
server {
listen 80;
server_name test.com;
return 301 http://www.test.com$request_uri;
}
server {
listen 80 default_server;
server_name _;
return 444;
}
代码中已经含有“server_name test.com”,这也是为什么在“前提”中说的不能添加test.com的原因,否则会冲突。
A大还提供了一种方法,为server特别建立一个虚拟主机,个人觉得只是新建一个server段配置文件非得新建一个虚拟主机有点夸张了,通过ftp上传的方法比较严格点!

-------
通过上面两种方法都可以实现“不带www的域名301转向到带www的域名+禁止未绑定域名解析到主机+禁止IP访问”

方法一的优点是直接在rewrite里面写规则,操作方便省事!缺点是nginx官方文档里说用if方式判断的方法是错误的,复杂而且低效。
见nginx官方文档 http://nginx.org/cn/docs/http/converting_rewrite_rules.html
方法二的优点是nginx官方推荐的方法,缺点是操作比较麻烦点!!!

大家根据自己的个人情况选用适合的方法!!!
本人是个追求完美的人,nginx官方说方法二才是正确的方法,所以我还是选择的方法二,A大是不是考虑出一个vhost修改插件叫amvhost,直接拿amrewrite改一个应该很快吧!!!

amrewrite修改“web环境/rewrite”下的文件
amvhost修改“web环境/vhost”下的文件

这样的话就真的很灵活了!!!
评价: 这篇分享有价值吗?  没有 (0分)   有, 感谢 (21.33分)
2014-11-11 19:07:02 1

amysql
创始人
97236.00 价值分

手动配置server与新建虚拟主机没差别的。
面板添加方便以后管理与配置。

方法二可以这样操作:
例如:可以在面板分别添加两个虚拟主机,
www.amh.sh
amh.sh
在amrewrite模块给amh.sh同样可以添加规则,这样就完成了。
return 301 http://www.amh.sh$request_uri;
评价: 这篇分享有价值吗?  没有 (-3.94分)   有, 感谢 (0分)
回复  2014-11-12 11:07:13 2

iseeyo
金牌会员
5371.59 价值分

[i=s] 本帖最后由 iseeyo 于 2014-11-12 11:46 编辑 [/i]

引用:
amysql 发表于 2014-11-12 11:07
手动配置server与新建虚拟主机没差别的。
面板添加方便以后管理与配置。


问题是新建了个虚拟主机的话,列表里面就多了个不是网站的虚拟主机,感觉很别扭额,应该很多人和我一样的想法吧,目前新建虚拟主机的某些配置还是不能满足一些有特殊要求的用户的,用上面说的amvhost的方式,仅仅增加一个vhost修改插件,让用户可以自由更改vhost目录下的conf文件岂不是更灵活,A大考虑下吧,用amrewrite改改不是很快吗,只要改个对应路径就行了 支持
这个东西的作用很多呀,比如可以自己设置反代,就不用等amh官方的反代插件啦!!!
评价: 这篇分享有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2014-11-12 11:39:13 3

iseeyo
金牌会员
5371.59 价值分

[i=s] 本帖最后由 iseeyo 于 2014-11-12 11:53 编辑 [/i]

引用:
amysql 发表于 2014-11-12 11:07
手动配置server与新建虚拟主机没差别的。
面板添加方便以后管理与配置。


其实我的重点是amvhost这个东西,这样我就可以自由更改配置文件了,相信很多高端用户用得着这个东西,很有用的!!!
比如自由设定301及禁止IP访问!!!
又比如可以在amh后台快速编辑反代,就不用等amh官方的反代插件啦!!!
评价: 这篇分享有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2014-11-12 11:48:17 4

zq9610
铁牌会员
177.00 价值分

小白表示没有看懂。。。。。
评价: 这篇分享有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2014-11-12 14:22:56 5

amysql
创始人
97236.00 价值分

引用:
iseeyo 发表于 2014-11-12 11:48
其实我的重点是amvhost这个东西,这样我就可以自由更改配置文件了,相信很多高端用户用得着这个东西,很有 ...

可以安装下kodexplorer,可以管理用户创建的环境,
整个环境的配置都可以。
评价: 这篇分享有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2014-11-13 12:35:33 6

iseeyo
金牌会员
5371.59 价值分

引用:
amysql 发表于 2014-11-13 12:35
可以安装下kodexplorer,可以管理用户创建的环境,
整个环境的配置都可以。 ...


kodexplorer要登陆,还不如直接用ftp来得直接呢,算了,我自己把amrewrite改改,改个amvhost来用 支持
评价: 这篇分享有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2014-11-13 12:50:03 7

amysql
创始人
97236.00 价值分

引用:
iseeyo 发表于 2014-11-13 12:50
kodexplorer要登陆,还不如直接用ftp来得直接呢,算了,我自己把amrewrite改改,改个amvhost来用{:4_102: ...


是的,方法很多。以后提供一个amvhost或是修改环境的文件的模块也可以。
现在暂时用已有的方法。
评价: 这篇分享有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2014-11-14 11:56:35 8

hanhanwen
银牌会员
1317.96 价值分

表示看不懂,,,我就直接新建。。。
没空,没时间。。。
做做广告:www.ainlog.com
www.stamip.com

评价: 这篇分享有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2014-12-04 19:53:35 9

hanhanwen
银牌会员
1317.96 价值分

引用:
iseeyo 发表于 2014-11-13 12:50
kodexplorer要登陆,还不如直接用ftp来得直接呢,算了,我自己把amrewrite改改,改个amvhost来用{:4_102: ...

你帮着写写教程得了。
弄个FAQ。。。
评价: 这篇分享有价值吗?  没有 (0分)   有, 感谢 (0分)
回复  2014-12-04 20:06:49 10
 1 2 3 >  (总3页)
AMH社区列表
旅客不可参与帖子, 请您先登录
用户服务中心