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. 【websocket】小白快速上手flask-socketio

    大家好,我是一个初级的Python开发工程师.本文是结合官方教程和代码案例,简单说下我对flask-socketio的使用理解. 一.websocket简介 websocket 说白一点就是,建立客户 ...

  2. MySQL8 概述、下载、安装、使用(Windows2019和centos7.9)

    MySQL8 概述.下载.安装.使用(Windows2019和centos7.9) 1.MySQL概述 1.1 数据库相关概念在这一部分,先了解三个概念:数据库.数据库管理系统.SQL. 名称 全称 ...

  3. Blazor前后端框架Known-V1.2.6

    V1.2.6 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行. Gitee: https://gitee.com/known/Known Gith ...

  4. Linux中的进程页表

    是什么 进程页表是用于管理进程虚拟地址空间和物理内存之间映射关系的数据结构.它记录了进程中每个虚拟页对应的物理页的信息. 什么作用 进程使用进程页表的方式是通过虚拟地址访问内存.当进程访问一个虚拟地址 ...

  5. PlayWright(二十二)- allure插件(一)

    在上文中,我们介绍并使用了pytest-html插件,总之并不复杂,但是今天我们要讲一个比pytest-html插件强很多的插件allure报告,我们要掌握他并且灵活使用,之后的框架就不需要考虑其他的 ...

  6. vscode c++食用指南

    准备 配置环境为机房的 win10. 首先你需要下载 vscode. 可以从官网下载:https://code.visualstudio.com/Download 配置编译c++ 下载完之后安装好,界 ...

  7. Nginx快速入门:简介、安装、配置

    Nginx概述 与 Apache 软件类似,Nginx ("engine x")是一个开源的.支持高性能.高并发的web服务和代理服务软件.它是由俄罗斯人 Igor Sysoev ...

  8. Linux服务器的性能监控与分析

    通过vmstat分析性能  如上图所示,我们在命令vmstat后面添加了两个参数,1表示间隔一秒获取一次,10表示总共获取10次 我们一列一列数据来看: r:代表目前实际运行的指令队列,很高表示CPU ...

  9. 7、Mybatis之特殊SQL

    7.1 创建接口.映射文件和测试类 ++++++++++++++++++++++++++分割线++++++++++++++++++++++++++ 注意namespace属性值为对应接口的全限定类名 ...

  10. 零代码基础,一分钟教你快速搭建微信ChatGPT机器人!

    本教程收集于:ChatGPT聊天机器人搭建全攻略汇总:精心整理 Github登录账号后,先Forck下仓库:https://github.com/zhayujie/chatgpt-on-wechat ...