1、简述location的常见规则优先级,并且逐个验证;
 =  :精确匹配(必须全部相等)       #精准匹配优先级最高
~ :大小写敏感(正则表达式) #一般使用~*忽略大小写匹配 (正则表达式 有上下区分,上优先匹配,下后匹配)
~* :忽略大小写(正则表达式),这里要注意忽略大小写的意思是请求的字符大小写都可以, 但是不会进行大小转换,请求的大小写对应的文件必须存在。
^~ :只需匹配uri部分 #有该匹配规则时将会忽略正则表达式(= / ~)
@ :内部服务跳转

重新加载nginx进行测试:
/usr/local/nginx/sbin/nginx -s reload

精准匹配:

= : 一般是匹配某个具体文件。

创建test该目录及目录下的文件:
mkdir -p /usr/local/nginx/html/test

echo "this is test new index.html" >/usr/local/nginx/html/test/index.html
web页面测试效果:

大小写敏感匹配:

~ :大小写敏感 (正则表达式)

大小写不敏感匹配:

~* : 大小写忽略 (正则表达式)

# 则会忽略 uri 部分的大小写
#curl 192.168.1.12/jfedu.jpg [成功] 可以成功匹配,但是目录中要jfedu.jpg文 件
#curl 192.168.1.12/JFEDU.jpg [成功] 可以成功匹配,但是目录中要JFEDU.jpg文 件
以上仅仅是echo 打印测试: 在真实环境需要改文件或者图片
忽略正则匹配:

^~ : 只匹配以uri开头, 匹配成功以后, 会停止搜索后面的正则表达式匹配。

重启加载Nginx服务
/usr/local/nginx/sbin/nginx -s reload

2、实现不同终端访问不同域名的跳转,其中如果时ie浏览器访问,则提示浏览器不兼容,建议 更换charome浏览器继续访问:
rewrite规则:

nginx的rewrite功能需要pcrer软件支持,即通过perl兼容正则表达式语句进行匹配的。

默认参数编译nginx就会支持rewrite的模块,但是也必须要pcre的支持。
rewrite是实现URL重写的关键指令,根据regex (正则表达式)部分内容,重定向到replacemen
 
rewrite语法:
rewrite               <regex>        <replacement>        [flag];
正则 替代内容 flag标记 正则:perl兼容正则表达式语句进行规则匹配
替代内容:将正则匹配的内容替换成replacement
flag标记:rewrite支持的flag标记 #flag标记说明:
last #本条规则匹配完成终止当前location的规则,继续向下匹配新的location URI规则
break #本条规则匹配完成即终止, 不再匹配后面的任何规则
redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent #返回301永久重定向, 浏览器地址栏会显示跳转后的URL地址
 
rewrite实例:

实现域名跳转

方法一:

    server {
listen 80;
server_name www.lutixia.com;
rewrite ^/(.*)$ http://www.fdd1.com/$1 permanent;
}
server {
listen 80;
server_name www.fdd1.com;
location / {
root /data/www;
index index.html index.htm
}
}
需要创建或者确保/date/www/有index.html文件:

web访问效果:

访问lutixia.com会自动跳转到www.fdd1.com该域名:

curl 测试
curl -lv www.fdd1.com
curl -lv www.lutixia.com
curl -lv lutixia.com
方法二: ps: web测试与方法一 一样的效果 (这里不在做测试)

    server {
listen 80;
server_name www.fdd1.com www.lutixia.com ;
if ( $host != 'www.fdd1.com' ) {
rewrite ^/(.*)$ http://www.fdd1.com/$1 permanent;
}
location / {
root /data/www;
index index.html index.htm;
}
}
实现浏览器的语言跳转:
    server {
listen 80;
server_name www.fdd1.com lutixia.com;
root /data/www;
index index.html index.htm; charset utf-8;
if ( $http_accept_language ~ "zh" ) {
rewrite ^/$ /zh;
}
if ( $http_accept_language ~ "en" ) {
rewrite ^/$ /en;
}
}
创建目录及文件:
mkdir -p /data/www/zh en
echo "this is 中文 " >/data/www/zh/index.html
echo "this is English" >/data/www/ch/index.html

  

web页面测试
当浏览器设置语言为中文时目录将会自动切换zh(中文目录)

当浏览器切换英文时将会自动切换英文目录 en

实现不同终端跳转:
实现错误页面返回首页:

开启此模块,

设置如下:
error_page 404 =200 /index.html;

实现错误页面返回腾讯公益首页:

在发布目录下创建404.html文件,并且写入以下代码 : /usr/local/nginx/html/404.html
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8" />
<title>公益404</title>
</head>
<body>
<!--<script type="text/javascript"
src="http://www.qq.com/404/search_children.js"></script>--> <script type="text/javascript"
src="//qzonestyle.gtimg.cn/qzone/hybrid/app/404/search_children.js"
charset="utf-8"></script> </body>
</html>

简述location规则优先级-实现域名跳转-不同语言-终端跳转-错误页面返回首页-腾讯公益首页的更多相关文章

  1. Nginx 配置 Location 规则优先级问题

    nginx 的 location与配置中 location 顺序没有关系,与 location 表达式的类型有关.相同类型的表达式,字符串长的会优先匹配. 以下是按优先级排列说明: 等号类型(=)的优 ...

  2. nginx之location匹配优先级和安全问题

    最近一直在做location的配置,遇到优先级别问题(如有配置不当,会存在安全隐患),以下是个人的一些学习体会 一.location 匹配符 1.等于匹配符:      ##"=" ...

  3. Nginx Location规则

    Nginx由内核和模块组成,其中内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端的请求映射到一个location block,而location是Nginx配置中的一个指令 ...

  4. nigx配置location规则

    以下是收集的,对于不是很熟的朋友,配置转发很有帮助 1.location匹配命令和优先级: 优先级: Directives with the = prefix that match the query ...

  5. 详细解析 nginx uri 如何匹配 location 规则

    location 是 nginx 配置中出现最频繁的配置项,一个 uri 是如何与多个 location 进行匹配的? 在有多个 location 都匹配的情况下,如何决定使用哪一个 location ...

  6. nginx 反向代理 配置 https 实现http https同时存在 经测试 支持location 规则

    server { listen ssl; #监听443端口 server_name www.app01.com; ssl on; #启用ssl加密 ssl_certificate /etc/cert/ ...

  7. 从webkit内核简单看css样式和css规则优先级(权重)

    目录 webkit中样式相关类及类间关系 样式规则匹配 权重(优先级)计算 权重相同时的覆盖原则 webkit中样式相关类及类间关系 资料来源: <webkit技术内幕> 结构相关类: 1 ...

  8. nginx location的优先级

    原来一直以为location的优先级是先后顺序,结果有次项目中傻眼了,赶紧百度一下,下面的内容参考了这个链接 location表达式类型 ~ 表示执行一个正则匹配,区分大小写~* 表示执行一个正则匹配 ...

  9. nginx自定义500,502,504错误页面无法跳转【转】

    1.自定一个页面,这个页面是一个链接地址可以直接访问的. 以下是nginx的配置: location / {            proxy_pass http://tomcat_app108;   ...

  10. PHP实现根据浏览器跳转不同语言页面代码

    以下是对使用PHP实现根据浏览器跳转不同语言页面的代码进行了介绍,需要的朋友可以过来参考下 代码: <?php /** * 根据不同浏览器跳转不同页面 * 来源:www.jbxue.com * ...

随机推荐

  1. html实现原生table并设置表格边框的两种方式

    虽然第三方表格插件多不胜数,但是很多场景还是需要用到原生<table>,掌握html原生table的实现方法,是前端开发的必备技能.例如:print-js打印.html2canvas生成图 ...

  2. js中数组的方法,32种方法

    数组的32中方法=>{ 1.push(): 在数组末尾添加一个或多个元素,并返回修改后的数组. let fruits = ['apple', 'banana', 'orange']; fruit ...

  3. 求任意两个正整数的最大公约数(GCD)。

    问题描述 求任意两个正整数的最大公约数(GCD). 问题分析 如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数.几个自然数公有的约数,叫做这几个自然数的公约数.公约数中最大的一个公约 ...

  4. 2023年CCPC河南省程序设计竞赛 mjh

    首先,很荣幸有机会参加此次ccpc,虽然成绩很一般... 这次ccpc一共过了两道签到题.比赛开始就找到了a题,考察字符串的回文判断,通过调用c++库函数过了.第二道签到题类似于数学题.通过类似于找规 ...

  5. Django 组织json格式

    @api_view(['GET', 'POST']) def api_test(request): classes = Classes.objects.all() # classes_data = C ...

  6. 解决pandas 读取csv文件报错

    使用encoding参数: pd.read_csv(path,sep=",",encoding='utf-16') 注意:该参数之后的编码格式,并不是固定的,需要用记事本打开csv ...

  7. Parallel 与 ConcurrentBag<T> 这对儿黄金搭档(C#)【并发编程系列】

    〇.前言 日常开发中经常会遇到数据统计,特别是关于报表的项目.数据处理的效率和准确度当然是首要关注点. 本文主要介绍,如何通过 Parallel 来并行处理数据,并组合 ConcurrentBag&l ...

  8. docker-run-failed

    Phenomenon overlay2 not such file or directory. overlay2 not such file or directory. network not suc ...

  9. JavaScript 基础(1) - 笔记

    1 JavaScript基础 1.1 JavaScript 是什么 1.JavaScript(是什么?) 是一种运行在客户端(浏览器)的编程语言,实现人机交互效果. 2.作用(做什么?) 网页特效(监 ...

  10. js判断h5页面地址的打开方式(微信、pc、移动端)

    1 function isOpenMode(){ 2 //平台.设备和操作系统 3 var system = { 4 win: false, 5 mac: false, 6 xll: false, 7 ...