Chinaunix首页 | 论坛 | 博客
  • 博客访问: 955269
  • 博文数量: 245
  • 博客积分: 11429
  • 博客等级: 上将
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-15 00:16
文章存档

2011年(56)

2010年(174)

2009年(15)

分类: LINUX

2010-07-17 13:33:52

需求比标题复杂些,如下:

(1)在dns注册 *.test.com的域名指向一台服务器,如:210.87.12.5
(2)在这台服务器上,安装有web程序,该程序可以根据用户输入的二级域名跳转到该用户的产品主页
(3)对于非法的域名指向,进行rewrite处理(返回404错误,否则一经被查,断电处理)
(4)用户访问合法的域名但不是https连接的,跳转到https页面(即若是80端口则跳转到443端口)
(5)对于指定的二级域名,只准许某个(些)ip访问

针对各个需求作如下处理:

需求1:简单,在dns注册泛域名即可

需求2:纯粹的程序处理,略过

需求3:rewrite规则如下:

RewriteCond %{HTTP_HOST} !^abc|^apple|^banana|^demo\.test\.com [NC]
RewriteRule ^/$ default [R=404]

即:不是我上面列出的域名,其他的都返回404错误。这里注意每一项的前面都要加^

需求4:rewrite规则如下:

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

需求5:rewrite规则如下:

RewriteCond %{REMOTE_ADDR} !^124.11.12.141 [OR]
RewriteCond %{REMOTE_ADDR} !^124.11.12.142 [NC]
RewriteCond %{HTTP_HOST} ^abc\.test\.com [NC]
RewriteRule ^/$ default [R=404]

即:如果用户的ip不是124.11.12.141或124.11.12.142但却访问了 abc.jobkoo.com 则直接返回404错误,也就是说只有列出的ip可以访问。

注意:

(1)由于本机同时开放了80和443端口,因此在设置rewrite规则时需要在两端口的虚拟主机配置中同时添加。
(2)rewrite是有顺序的,我这里的顺序如下:

# 限制ip访问域名
RewriteCond %{REMOTE_ADDR} !^124.11.12.141 [OR]
RewriteCond %{REMOTE_ADDR} !^124.11.12.142 [NC]
RewriteCond %{HTTP_HOST} ^abc\.test\.com [NC]
RewriteRule ^/$  default [R=404]

# 拒绝非法域名指向
RewriteCond %{HTTP_HOST} !^abc|^apple|^banana|^demo\.test\.com [NC]
RewriteRule ^/$ default [R=404]

# 非443端口跳转
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
阅读(556) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~