`

nginx基础

 
阅读更多
为区分大小写匹配
~* 为不区分大小写匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹
-f和!-f用来判断是否存在文件
-d和!-d用来判断是否存在目录
-e和!-e用来判断是否存在文件或目录
-x和!-x用来判断文件是否可执行

last 相当于Apache里的[L]标记,表示完成rewrite,呵呵这应该是最常用的
break 终止匹配, 不再匹配后面的规则
redirect 返回302临时重定向 地址栏会显示跳转后的地址
permanent 返回301永久重定向 地址栏会显示跳转后的地址

$args
$content_length
$content_type
$document_root
$document_uri
$host
$http_user_agent
$http_cookie
$limit_rate
$request_body_file
$request_method
$remote_addr
$remote_port
$remote_user
$request_filename
$request_uri
$query_string
$scheme
$server_protocol
$server_addr
$server_name
$server_port
$uri
1、if指令
所有的Nginx内置变量都可以通过if指令和正则表达式来进行匹配,并且根据匹配结果进行一些操作,如下:
if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /msie/$1 break; } if ($http_cookie ~* "id=([^;] +)(?:;|$)" ) { set $id $1; }

使用符号~*和~模式匹配的正则表达式:
~为区分大小写的匹配。
~*不区分大小写的匹配(匹配firefox的正则同时匹配FireFox)。
!~和!~*意为“不匹配的”。
Nginx在很多模块中都有内置的变量,常用的内置变量在HTTP核心模块中,这些变量都可以使用正则表达式进行匹配。
2、可以通过正则表达式匹配的指令
location
查看维基:location
可能这个指令是我们平时使用正则匹配用的最多的指令:
location ~ .*\.php?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/wwwsite/test.com/$fastcgi_script_name; include fcgi.conf; }

几乎每个基于LEMP的主机都会有如上一段代码。他的匹配规则类似于if指令,不过他多了三个标识符,^~、=、@。并且它没有取反运算符!,这三个标识符的作用分别是:
^~ 标识符后面跟一个字符串。Nginx将在这个字符串匹配后停止进行正则表达式的匹配(location指令中正则表达式的匹配的结果优先使用), 如:location ^~ /images/,你希望对/images/这个目录进行一些特别的操作,如增加expires头,防盗链等,但是你又想把除了这个目录的图片外的所有图 片只进行增加expires头的操作,这个操作可能会用到另外一个location,例如:location ~* \.(gif|jpg|jpeg)$,这样,如果有请求/images/1.jpg,nginx如何决定去进行哪个location中的操作呢?结果取决 于标识符^~,如果你这样写:location /images/,这样nginx会将1.jpg匹配到location ~* \.(gif|jpg|jpeg)$这个location中,这并不是你需要的结果,而增加了^~这个标识符后,它在匹配了/images/这个字符串后 就停止搜索其它带正则的location。
= 表示精确的查找地址,如location = /它只会匹配uri为/的请求,如果请求为/index.html,将查找另外的location,而不会匹配这个,当然可以写两个 location,location = /和location /,这样/index.html将匹配到后者,如果你的站点对/的请求量较大,可以使用这个方法来加快请求的响应速度。
@ 表示为一个location进行命名,即自定义一个location,这个location不能被外界所访问,只能用于Nginx产生的子请求,主要为error_page和try_files。
注意,这3个标识符后面不能跟正则表达式,虽然配置文件检查会通过,而且没有任何警告,但是他们并不会进行匹配。
综上所述,location指令对于后面值的匹配顺序为:
标识符“=”的location会最先进行匹配,如果请求uri匹配这个location,将对请求使用这个location的配置。
进行字符串匹配,如果匹配到的location有^~这个标识符,匹配停止返回这个location的配置。
按照配置文件中定义的顺序进行正则表达式匹配。最早匹配的location将返回里面的配置。
如果正则表达式能够匹配到请求的uri,将使用这个正则对应的location,如果没有,则使用第二条匹配的结果。

实例:
server {
    listen       80;
    server_name  b2c.website.cn;
    if ( $request_uri ~* ^(.*)/main/([0-9a-z]+)WebSite$ ){
        rewrite ^([0-9a-z]+).website.cn/#/main/([0-9a-z]+)WebSite$ /$2.website.cn last;
    }
    location / {
        root   /www/b2c;
        index  index.html index.htm;
    }
}
 
分享到:
评论

相关推荐

    nginx基础和优化配置.rar

    **Nginx基础和优化配置** Nginx是一款高性能的HTTP和反向代理服务器,广泛应用于网站的负载均衡和内容分发。它以其轻量级、高并发处理能力以及丰富的模块化设计而闻名。以下是对Nginx的基础知识和优化配置的详细...

    nginx 基础,pdf

    Nginx 基础知识 Nginx 是一款流行的开源 Web 服务器软件,主要提供 HTTP 服务、反向代理负载均衡服务、动静分离服务和基于 Lua 脚本编写脚本程序提供缓存服务。下面是 Nginx 的基础知识点: 一、Nginx 简介 * ...

    nginx基础配置.rar

    **Nginx基础配置详解** Nginx,一个高性能、轻量级的Web服务器和反向代理服务器,因其高效稳定和灵活的配置而备受青睐。本教程将带你深入理解Nginx的基础配置,通过实际操作让你轻松掌握配置技巧。 ### 1. Nginx...

    应用—nginx基础部署详解

    **Nginx基础部署详解** 在本文中,我们将深入探讨如何在Linux环境下,特别是CentOS 6.4 x86_64系统上,安装和配置Nginx Web服务器。Nginx是一款高性能的HTTP和反向代理服务器,以其轻量级、高并发处理能力而闻名。...

    django基础语法+mvc+ORM+nginx基础

    Django 基础语法、MVC、ORM、Nginx 基础 Django 是一个基于 Python 的免费开源的 Web 应用框架,使用了 MVC(Model-View-Controller)架构模式。下面是 Django 的基础语法、MVC、ORM 和 Nginx 基础知识点: Django...

    Nginx基础教程.pdf

    ### Nginx基础教程知识点详解 #### Nginx简介 Nginx是一款高效能的HTTP服务器及反向代理服务器,并且支持IMAP/POP3/SMTP等协议的代理服务器功能。它以其出色的性能表现、高度稳定性、丰富的特性集合、简便的配置...

    nginx入门第一讲.nginx基础.docx

    **Nginx基础详解** Nginx是一款高性能的HTTP和反向代理服务器,以其轻量级、高并发处理能力而闻名。在本文中,我们将深入探讨Nginx的基础配置及功能,包括常用命令、配置文件结构及其各部分的含义。 **一、Nginx...

    nginx基础知识资料

    **Nginx基础教程** Nginx是一款高性能的HTTP和反向代理服务器,广泛应用于互联网,以其高效、轻量级和稳定的特点深受开发者喜爱。它主要用于处理静态文件、反向代理、负载均衡以及缓存等功能。 ### 1. Nginx安装与...

    nginx基础知识.pdf

    Nginx 基础知识 Nginx 是一个俄罗斯人编写的轻量级的 HTTP 服务器,发音为“engine X”,是高性能的 HTTP 和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。Nginx 因为它的稳定性、丰富的模块库、灵活的...

    nginx 基础

    **Nginx基础** Nginx是一款高性能的HTTP和反向代理服务器,广泛应用于Web服务领域,以其轻量级、高并发、低内存消耗而著称。本篇将深入探讨Nginx的基础知识,包括其安全体系架构以及基础概念。 **一、Nginx架构** ...

    开源软件培训-Nginx基础及其应用场景

    【Nginx基础及其应用场景】 Nginx是一款高性能、高并发的开源Web服务器,它以其优秀的性能、稳定性以及丰富的功能而被广泛应用于互联网行业。在【开源软件培训-Nginx基础及其应用场景】中,我们将深入探讨Nginx的...

    Nginx:Nginx基础架构与工作原理.docx

    Nginx:Nginx基础架构与工作原理.docx

    Nginx 容器配置文件,基于 Nginx 基础进项,安装 vim

    Nginx 基础镜像,为了保持镜像最小,默认软件都没有进行安装,开发时,更新配置文件只能通过脚本进行,操作复杂。本镜像文件在 Nginx 基础镜像的基础上安装了 vim,也可以根据需求安装更多软件。

    Nginx基础架构与工作原理+Nginx安装与配置环境搭建+Nginx核心配置指令详解+Nginx反向代理与负载均衡技术等教程

    Nginx基础架构与工作原理 Nginx安装与配置环境搭建 Nginx核心配置指令详解 Nginx反向代理与负载均衡技术 Nginx缓存机制与优化 Nginx日志管理与分析 Nginx安全防护策略 Nginx与HTTPS配置实践 Nginx限流与防盗链设置 ...

    docker-compose构建nginx基础镜像包

    docker-compose构建nginx基础镜像包

    2.Nginx 基础入门篇.学习笔记整理分享给需要的同学

    2.Nginx 基础入门篇.学习笔记整理分享给需要的同学

    nginx基础介绍

    ### Nginx基础介绍 Nginx是一款广泛使用的高性能HTTP和反向代理Web服务器,同时也是一个IMAP/POP3/SMTP代理服务器。由于其稳定、丰富的功能集、简单的配置方式和较低的内存消耗等特性,Nginx已经成为互联网上许多高...

    nginx基础配置.pdf

    基础

    nginx基础实例培训视频.zip

    01-nginx介绍及编译安装 02-nginx信号量 03-nginx虚拟主机配置 04-nginx日志管理 05-nginx定时任务完成日志切割 06-Location详解之精准匹配 07-Location之正则匹配 08-Location总结图解 09-nginx Rewrite语法详解 10...

    Nginx 基础使用.pdf

    本文将深入探讨Nginx的基础使用,包括其目录结构、基本运行原理、配置与应用场景,以及虚拟主机、反向代理、负载均衡策略等相关知识。 1. **目录结构** Nginx的目录结构主要包括以下几个部分: - `conf`:存储...

Global site tag (gtag.js) - Google Analytics