您的位置:首页 > 运维架构 > Nginx

nginx反向跳转 案例1

2018-10-31 15:50 120 查看

1.nginx 根据http_referer来跳转

索引擎的搜索页面进到我们的网站时,就可以做一个跳转。

其实,说实话,这样做也没有什么太大意义,但是nginx的确可以实现这样的操作:

在配置文件的 server {} 中加入如下配置:

      if ($http_referer ~* "www.baidu.com") {
          rewrite ^/(.*)$ http://www.lishiming.net redirect;
      }
      if ($http_referer ~* "www.google.com") {
          rewrite ^/(.*)$ http://www.lishiming.net redirect;
      }

这样配置以后,凡是从百度或者google点过来的请求都会跳转到 www.lishiming.net

 

nginx实现301域名跳转

bbaobelief关注0人评论1069人阅读2012-12-20 13:41:05

 关于域名跳转可以有多种方法:

1.在dns中设置URL重定向;

2.修改程序实现;

3.修改服务器配置;

第一种方法:我的dns使用的是免费的dnspod,需网站接入1个月后才可以使用URL重定向服务;

第二种方法:据说对SEO不好,果断放弃;

第三种方法:我的网站服务器使用的是nginx,下面介绍nginx实现域名重定向的两种方法。 

①单独对需要跳转的域名在server写重定向

 
  1.     server{ 
  2.         listen       80; 
  3.         server_name  *.wphones.cn wphones.cn www.aiphones.cn  *.aiphones.cn aiphones.cn; 
  4.         access_log off; 
  5.         rewrite ^/(.*)$ http://www.wphones.cn/$1 permanent; 
  6.         } 
  7.   
  8.   server { 
  9.         listen       80; 
  10.         server_name  www.wphones.cn; 
  11.         ... 

②对两个域名做一个host判断,在server_name下添加

 
  1.   server { 
  2.       listen       80; 
  3.       server_name  www.pdavip.com test.pdavip.com; 
  4.       if ($host != ‘test.pdavip.com’) { 
  5.       rewrite ^/(.*)$ http://www.fashao.me/$1 permanent; 
  6.       } 
  7. ... 
  8.   }

需要注意的是if条件中的域名单引号。应该是中文的单引号,英文单引号会出现下面的错误提示。

我想许多配置不成功的朋友就是这个原因引起的。

关于nginx重定向规则请参考:

http://www.jefflei.com/post/1015.html

nginx重定向规则详细介绍(原创)

2009年2月20日

阅读评论发表评论

Nginx的重定向用到了Nginx的HttpRewriteModule,下面简单解释以下如何使用的方法:

rewrite命令

nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location 和IF条件判断块中,命令格式如下:
rewrite 正则表达式 替换目标 flag标记
flag标记可以用以下几种格式:
last – 基本上都用这个Flag。
break – 中止Rewirte,不在继续匹配
redirect – 返回临时重定向的HTTP状态302
permanent – 返回永久重定向的HTTP状态301
例如下面这段设定nginx将某个目录下面的文件重定向到另一个目录,$2对应第二个括号(.*)中对应的字符串:

location /download/ {
rewrite ^(/download/.*)/m/(.*)\..*$ $1/nginx-rewrite/$2.gz break;
}

nginx重定向的IF条件判断

在server和location两种情况下可以使用nginx的IF条件判断,条件可以为以下几种:
正则表达式

如:
匹配判断

~  为区分大小写匹配; !~为区分大小写不匹配
 ~* 为不区分大小写匹配;!~为不区分大小写不匹配
例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:

if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /nginx-ie/$1 break;
}

文件和目录判断
  -f和!-f判断是否存在文件
 -d和!-d判断是否存在目录
 -e和!-e判断是否存在文件或目录
 -x和!-x判断文件是否可执行
例如下面设定nginx在文件和目录不存在的时候重定向:
if (!-e $request_filename) {
proxy_pass http://127.0.0.1;
}

return

返回http代码,例如设置nginx防盗链
location ~* \.(gif|jpg|png|swf|flv)$ {
valid_referers none blocked www.jefflei.com www.leizhenfang.com;
if ($invalid_referer) {
return 404;
}
}

 

 

-------------------------

 

--------

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: