Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
一、基础
二、详解
http
location
rewrite
ngx_http_rewrite_module模块用来使用正则表达式(PCRE)改变请求的URI,返回重定向,并有条件地选择配置。
Nginx由内核和模块组成:内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block,而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作;Nginx的功能如此强大是因为它有非常多的模块来支撑,Nginx本身包含很多模块,用户也可以根据自己的需求开发模块。
Nginx模块从结构上分为:基础模块、核心模块和第三方模块。第三方模块从功能上又可以分为Handlers处理器模块:直接处理请求,并进行输出内容和修改headers信息等操作,一般只有一个;Filters过滤器模块:主要对其他处理器模块输出的内容进行修改操作,最后由Nginx输出;Proxies代理类模块:此类模块是Nginx的HTTP Up-stream之类的模块,主要与后端一些服务比如FastCGI等进行交互,实现服务代理和负载均衡等功能。其中,ngx_http_rewrite_module模块用来使用正则表达式(PCRE)改变请求的URI,返回重定向,并有条件地选择配置。
语法
rewrite regex replacement [flag];
regex
,正则表达式,这个太重要了,好多地方都会用到replacement
,重写后的内容,即替代前面的regex
flag
,可选参数,根据具体情况使用,常见如下:last
,本条规则匹配完成后继续向下匹配新的locationbreak
,本条规则匹配完成后终止,不再匹配任何规则redirect
,返回302临时重定向permanent
,返回301永久重定向
实战
- 永久重/临时定向
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33## 编辑hosts文件,加入以下内容
127.0.0.1 rewrite.com
127.0.0.1 nginx.com
## 编辑nginx配置文件,加入以下内容(或者使用多个子配置文件)
server {
listen 80;
server_name nginx.com;
location / {
root /your_path/nginx
index index.php index.html index.htm;
}
}
server {
listen 80;
server_name rewrite.com;
location / {
root /your_path/rewrite;;
rewrite ^/(.*) http://nginx.com permanent;
#rewrite ^/(.*) http://nginx.com redirect;
index index.php index.html index.htm;
}
}
## 重启nginx
nginx -s reload
## 浏览器访问,command + option + i审查元素
rewrite.com
Status Code: 301 Moved Permanently
Status Code: 302 Moved Temporarily
- 永久重/临时定向
- server
- upstream