产品服务AMH 免费服务器主机面板SSL证书 免费SSL证书申请 担保单 免费安全、零费率交易平台编程助手免费智能写代码、翻译AMYSQL 免费MySQL管理工具

AMH 社区首页

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

[求助帖] 关于rewrite的见解

iseeyo
金牌会员
5375.36 价值分

iseeyo 发表于 2014-11-11 14:55:39
本帖最后由 iseeyo 于 2014-11-11 15:14 编辑

假设我新建了一个wangzhan的运行环境,然后在里面新建了一个叫做test.com的主机……
那么就会在wangzhan目录的vhost目录下生成一个test.com.conf文件,即wangzhan/vhost/test.com.conf,也就是test.com.conf这个文件里面所有的规则都是属于当前主机的,并且test.com.conf这个文件里面是可以支持多个server段的!!!
amh现阶段的test.com.conf是这样的
server
{
listen 80; #listen end
server_name test.com www.test.com; #server_name end
index index.html index.htm index.php; #index end

set $subdomain '';
root /home/wwwroot/wangzhan/domain/test.com/web$subdomain;
include /home/wwwroot/wangzhan/rewrite/test.conf; #新增rewrite规则

……
}
上面这种写法造成test.conf文件里面不能再次使用server段,也就不能使用nginx官方阐述的最佳设置方法,A大说再单独建立一个虚拟主机的方法实际上是舍近求远的方法!!!

正确的方法应该是这样的
server
{
listen 80; #listen end
server_name test.com www.test.com; #server_name end
index index.html index.htm index.php; #index end

set $subdomain '';
root /home/wwwroot/wangzhan/domain/test.com/web$subdomain;
……
}
include /home/wwwroot/wangzhan/rewrite/test.conf; #新增rewrite规则
这样的话test.conf文件里面就可以使用server段了!!!

按照上述操作之后test.conf按照下面的写法,就可以实现非指定域名禁止解析到主机了,轻而易举的防止网站被镜像、被反代!
server {
listen 80 default_server;
server_name _;
return 301 http://www.test.com$request_uri;
}
最后附上nginx的官方规则说明,简简单单通过server段可以实现各种重定向(如不带www301到带www的域名、非指定域名禁止解析到主机等等)
http://nginx.org/cn/docs/http/converting_rewrite_rules.html
2014-11-11 14:55:39 1

amysql
创始人
16530.81 价值分

楼主出发点是好,但没考虑某些情况。
有在工单回复。

现在amrewrite添加的规则就是想在server内的。不允许再添加server段的。
这样才属于当前虚拟主机的规则,也才合理。

如果你需要添加server段,可以在面板添加一个虚拟主机也就等于增加了一个server段。
然后这个server段需要进行什么操作你再使用amrewrite进行管理。
  支持 (0分)  反对 (0分)
回复  2014-11-11 16:50:32 2

AMH面板 - 好用高效低占用、安全可靠极稳定

iseeyo
金牌会员
5375.36 价值分

引用:
amysql 发表于 2014-11-11 16:50
楼主出发点是好,但没考虑某些情况。
有在工单回复。



原因我知道了!
amh的/usr/local/nginx-generic-1.6.0/conf/nginx.conf 所有的主机是共用一个http的,在http里面include所有的conf文件的,这样就导致了nginx.conf 加载了包括rewrite规则里面的内容!一旦rewrite里面有了server段,意味着其他站也有了这个server段!
amrewrite的作用仅限于已经存在的server段内使用,如果需要单独增加server只能通过新建虚拟主机的形式进行……
不过只是新建一个server段配置文件非得新建一个虚拟主机有点夸张了! 支持
  支持 (0分)  反对 (0分)
回复  2014-11-11 18:31:49 3

amysql
创始人
16530.81 价值分

引用:
iseeyo 发表于 2014-11-11 18:31
原因我知道了!
amh的/usr/local/nginx-generic-1.6.0/conf/nginx.conf 所有的主机是共用一个http的,在h ...


http://amh.sh/bbs/forum.php?mod=redirect&goto=findpost&ptid=4986&pid=32418&fromuid=2
  支持 (0分)  反对 (0分)
回复  2014-11-12 11:08:17 4
 1  (总1页)
AMH社区列表
用户服务中心