nginx反向跳转 案例1
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写重定向
- server{
- listen 80;
- server_name *.wphones.cn wphones.cn www.aiphones.cn *.aiphones.cn aiphones.cn;
- access_log off;
- rewrite ^/(.*)$ http://www.wphones.cn/$1 permanent;
- }
- server {
- listen 80;
- server_name www.wphones.cn;
- ...
- }
②对两个域名做一个host判断,在server_name下添加
- server {
- listen 80;
- server_name www.pdavip.com test.pdavip.com;
- if ($host != ‘test.pdavip.com’) {
- rewrite ^/(.*)$ http://www.fashao.me/$1 permanent;
- }
- ...
- }
需要注意的是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;
}
}
-------------------------
--------
阅读更多
- nginx配置反向代理或跳转出现400问题处理记录
- Nginx监听非80端口反向代理80端口出现跳转错误
- nginx 反向跳转
- 求助:nginx反向代理后,使用Response.Redirect()页面长时间无响应
- Node部署学习-3-Nginx反向代理Node服务
- 构建Nginx服务器之三 反向代理Discuz论坛
- 反向代理服务器——nginx
- Nginx前端设置反向代理,后端Apache如何获取访客的真实IP,结合PHP
- 使用Nginx反向代理tomcat服务器
- Nginx 域名跳转配置
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
- nginx在windows下配置反向代理
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
- Nginx反向代理匹配部分二级域名或二级目录配置
- nginx 反向代理注意事项
- 使用docker容器学习 Nginx 反向代理
- NGINX下的目录跳转
- Nginx 反向代理服务器
- 借助Nginx搭建反向代理服务器实现简单负载均衡
- squid,nginx,lighttpd反向代理的区别