1.17-1.18 rewrite实战

https://coding.net/u/aminglinux/p/nginx/git/blob/master/rewrite/example.md

域名重定向

场景1

不带条件的场景

效果:访问2.com 跳转到1.com

vim 2.com.conf
server {listen 80;server_name 2.com;root /data/t-nginx/2.com;rewrite /(.*) http://1.com/$1 permanent;
}
# curl -x127.0.0.1:80 2.com/1.php -I
HTTP/1.1 301 Moved Permanently
Server: nginx/1.8.0
Date: Wed, 24 Oct 2018 07:14:10 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: http://1.com/1.php

带条件的场景

场景2

效果:当访问不是2.com的时候,跳转到www.2.com

vim 2.com.conf
server {listen 80;server_name 2.com www.2.com;root /data/t-nginx/2.com;if ( $host != 'www.2.com' ){rewrite /(.*) http://www.2.com/$1 permanent;}
}
# curl -x127.0.0.1:80 2.com/1.php -I
HTTP/1.1 301 Moved Permanently
Server: nginx/1.8.0
Date: Wed, 24 Oct 2018 07:27:42 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: http://www.2.com/1.php

示例3(http跳转到https):

server {listen 80;server_name 2.com www.2.com;root /data/t-nginx/2.com;rewrite /(.*) https://2.com/$1 permanent;
}
# !curl
curl -x127.0.0.1:80 2.com/1.php -I
HTTP/1.1 301 Moved Permanently
Server: nginx/1.8.0
Date: Wed, 24 Oct 2018 07:58:59 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: https://2.com/1.php

示例4(域名访问二级目录)

示例5(静态请求分离)

效果:当访问图片文件,流向媒体文件的时候,跳转到特定的域名

server {listen 80;server_name 2.com www.2.com;root /data/t-nginx/2.com;if ( $uri ~* 'jpg|png|gif|js$' ){rewrite /(.*) https://img.2.com/$1 permanent;}
}
# curl -x127.0.0.1:80 2.com/1.png -I
HTTP/1.1 301 Moved Permanently
Server: nginx/1.8.0
Date: Wed, 24 Oct 2018 08:28:18 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: https://img.2.com/1.png

6 防盗链

2.com.conf配置:

server {listen 80;server_name  www.2.com;
root /data/t-nginx/2.com;location ~* ^.+.(jpg|png|gif|js|mp3|mp4)${valid_referers none blocked server_names *.2.com 2.com;if ($invalid_referer){return 403;}}
}

curl 测试

# curl -x127.0.0.1:80 -e "http://linux.com" 'www.2.com/1.gif' -I
HTTP/1.1 403 Forbidden
Server: nginx/1.8.0
Date: Wed, 24 Oct 2018 09:10:37 GMT
Content-Type: text/html
Content-Length: 168
Connection: keep-alive
当用refers-->http://linux.com访问www.2.com/1.gif的时候,linux.com不属于白名单,所以会反馈return 403代码。

rewrite多个条件的并且

示例8:

location /{set $rule 0;if ($document_uri !~ '^/abc'){set $rule "${rule}1";}if ($http_user_agent ~* 'ie6|firefox'){set $rule "${rule}2";}if ($rule = "012"){rewrite /(.*) /abc/$1 redirect;}
}

解释:

  • set $rule 0 变量$rule的值为0,第一个条件

  • set $rule "${rule}1" 变量$rule的值为1,第二个条件

  • set $rule "${rule}2" 变量$rule的值为2,第三个条

  • if ($rule = "012") 当$rule满足0 1 2,也就是满足第一,二,三个条件的时候,会执行xxx。。。

转载于:https://blog.51cto.com/13578154/2308329

1.17-1.18 rewrite实战相关推荐

  1. 10.15 iptables filter表小案例10.16/10.17/10.18 iptables nat表应用

    2019独角兽企业重金招聘Python工程师标准>>> 10.15 iptables filter表小案例 iptables 命令.语法总结 iptables-nvL //查看ipt ...

  2. 2022第二届中国ESG与可持续发展国际峰会将于11月17日-18日在上海举行

    由上海希为(ECV International)主办的"2022第二届中国ESG与可持续发展国际峰会"即将于11月17日-18日在上海拉开帷幕.届时,欢迎各位行业同道莅临参与,期待 ...

  3. Altium Designer 18 速成实战 第五部分 PCB流程化设计常用操作(二)常用PCB快捷键的介绍

    Altium Designer 18 速成实战 第五部分 PCB流程化设计常用操作(二)常用PCB快捷键的介绍 常用系统快捷键----来自PCB联盟网,若侵联系即删. 目录 一.组合快捷键如何得来呢? ...

  4. 极简主义linux桌面,Ubuntu 16.04/17.10/18.04安装Zafiro极简图标主题

    zafiro图标是桌面xfce4,gnome或lxde的图标包,具有干净简单的设计线条,灵感来源于平面设计. 它是根据L.I.M.A许可证分发的,优先级是极简主义,不会用任何图标来饱和元素,每个图标都 ...

  5. Altium Designer 18 速成实战 第五部分 PCB流程化设计常用操作(三十)Cutout的放置

    Altium Designer 18 速成实战 第五部分 PCB流程化设计常用操作(三十)Cutout的放置 目录 一.正片割铜 1.选择多边形铺铜挖空 2.画出某片区域 3.重新铺铜 ​4.结束,消 ...

  6. 没有bug队——加贝——Python 练习实例 17,18

    17.题目: 输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 程序分析:利用 while 或 for 语句,条件为输入的字符不为 '\n'. 注:char:字符串个数:space: ...

  7. React16、17、18版本新特性

    react-16版本新特性 一.hooks import { useState } from 'react'function App() {// 参数:状态初始值比如,传入 0 表示该状态的初始值为 ...

  8. 【学习笔记】《深入浅出Pandas》第17章:Pandas实战案例

    文章目录 17.1 实战思想 17.1.1 链式方法 17.1.2 代码思路 17.1.3 分析方法 17.1.4 分析流程 17.1.5 分析工具 17.2 数据处理案例 17.2.1剧组表格道具: ...

  9. Flyme 9.2系统更新:适配魅族17、18、18s系列

    2022年4月28日,魅族官方发布消息称,Flyme 9.2再次更新.适配魅族17系列.魅族18及18s系列,今日内完成全量推送. 据了解,Flyme 9.2新增应用相册图标,应用照片轻松分类:重构图 ...

最新文章

  1. 采购计算机的,如何采购计算机
  2. 通用!Python保存一个对象的方式
  3. perl pop和push函数,不使用索引更能利用perl的特性,减少边界值错误发生的几率...
  4. marquee文字起始位置_PS修图改字无痕扫描件复印件截图文字英文日期修改:制作漂亮红色丝绸文字图片的PS教程...
  5. python对象属性在引用时前面需要加()_python基础-面向对象进阶
  6. DIN+DIEN,机器学习唯一指定涨点技Attention
  7. Effective Java~44. 坚持使用标准的函数接口
  8. 区块链产业生态、存在问题及政策建议|一文读懂新趋势
  9. TensorFlow——Ubuntu系统上TensorFlow的安装教程
  10. 微型计算机控制课程设计,《微型计算机控制技术》课程设计
  11. 离散数学期末复习总结
  12. Mac OS下安装MangoDB及其使用配置
  13. 【数字图像处理】Canny边缘检测C语言实现
  14. ios+手机壳+瞬间切换android,不只是双卡双待,这个手机壳能让你的 iPhone 运行 iOS + Android 双系统...
  15. Word中在小方框里面打勾的正确方法
  16. 201712-4 行车路线 ccf
  17. Android与Unity的交互
  18. 图神经网络(五):GAT
  19. mixamo动画批量添加根骨骼与将动作处理成原地动作(blender)
  20. 18 PyAutoGUI 屏幕截图(1)

热门文章

  1. nvidia linux路径,NVIDIA Jetson Linux驱动程序包开发人员指南 - 快速入门指南
  2. 以每月5美元的价格建立自己的博客[分步指南]
  3. LInux怎么配置php全局变量
  4. C++俄罗斯方块(linux环境)
  5. 车牌识别/车牌OCR识别应用场景
  6. 【华为机试真题详解】判断字符串子序列【2022 Q1 Q2 | 200分】
  7. java 获取打印机缺纸_Java怎么实现打印机监控
  8. MySQL - MySQL 常用存储引擎简介
  9. 计算机二级停车记录表,计算机二级停车情况记录表题目要求及答案.doc
  10. (错误记录)python3.9安装matplotlib3.2.2版本失败解决