Rewrite对称URL Rewrite,即URL重写,就是把传入Web的请求重定向到其他URL的过程。
1、URL Rewrite最常见的应用是URL伪静态化
2、从安全角度上讲,如果在URL中暴露太多的参数 防sql注入
3、实现网站地址跳转
Rewrite 相关指令
if、rewrite、set、return
if语法
if (condition) { … }
if 可以支持如下条件判断匹配符号
~ 正则匹配 (区分大小写)
~* 正则匹配 (不区分大小写)
!~ 正则不匹配 (区分大小写)
!~* 正则不匹配 (不区分大小写)
-f 和!-f 用来判断是否存在文件
-d 和!-d 用来判断是否存在目录
-e 和!-e 用来判断是否存在文件或目录
-x 和!-x 用来判断文件是否可执行
在匹配过程中可以引用一些Nginx的全局变量
$args 请求中的参数;
$document_root 针对当前请求的根路径设置值;
$host 请求信息中的"Host",如果请求中没有Host行,则等于设置的服务器名;
$limit_rate 对连接速率的限制;
$request_method 请求的方法,比如"GET"、"POST"等;
$remote_addr 客户端地址;
$remote_port 客户端端口号;
$remote_user 客户端用户名,认证用;
$request_filename 当前请求的文件路径名(带网站的主目录/usr/local/nginx/html/images /a.jpg)
$request_uri 当前请求的文件路径名(不带网站的主目录/images/a.jpg)
$query_string 与$args相同;
$scheme 用的协议,比如http或者是https
$server_protocol 请求的协议版本,"HTTP/1.0"或"HTTP/1.1";
$server_addr 服务器地址,如果没有用listen指明服务器地址,使用这个变量将发起一次系统调用以取得地址(造成资源浪费);
$server_name 请求到达的服务器名;
$document_uri 与$uri一样,URI地址;
$server_port 请求到达的服务器端口号;
准备环境
准备三台服务器,一台做代理服务器,两台做页面访问服务器
代理服务器 : a..3.141.240
VIP页面访问服务器 : a..3.141.236
页面访问服务器 : a..3.141.239
vip限速案例
一、配置代理服务器proxy
代理服务器 : a..3.141.240
vim /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name _;
set $rs a.3.141.235;
if ( $remote_addr ~ "a.3.141.30"){
set $rs a.3.141.239;
}
location / {
proxy_pass http://$rs;
}
}
二、配置页面服务器
1、VIP页面访问服务器
VIP页面访问服务器 : a..3.141.236
1.1 修改配置文件配置页面
vim /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name _;
location / {
root /wed/xxy;
index index.html index.htm;
}
}
1.2 创建发布目录
mkdir -pv /wed/xxy
1.3 写发布目录内容
vim /wed/xxy/index.html
1.4 重启nginx
systemctl restart nginx
2、普通用户页面配置
2.1修改配置文件配置页面
vim /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name _;
location / {
root /wed/xxy;
index index.html index.htm;
if ( $remote_addr !~ "a.3.141.30" ) {
limit_rate 10k;
}
}
}
2.2 创建发布目录
mkdir -pv /wed/xxy
2.3 写发布目录内容
vim /wed/xxy/index.html