ngx_http_rewrite_module模块
if指令
location /main {
default_type text/html;
if ( $scheme = http ) {
rewrite https://www.nginx.com;
}
}
-e 判断请求目录或者文件是否存在
-x 判断请求文件是否具有可执行权限
-d 判断请求的目录是否存在
-f 判断文件是否存在
set指令
location /main {
root /data/nginx/html;
set $name abc;
echo $name;
}
break指令
location /main {
root /data/nginx/html;
set $name abc;
echo $name;
break;
echo $scheme;
}
#处于break前的指令生效,后续不执行
return指令
return code ;#返回状态码
return code "text";#返回状态码及响应内容
return code URL ;#返回客户端的URL地址
rewrite_log
location /main {
index index.html;
default_type text/html;
set $name magedu;
echo $name;
rewrite_log on;
break;
set $my_port $server_port;
echo $my_port;
}
#其中 my_port未被初始化,所有会被记录至error_log
rewrite指令
- rewrite flag ```shell redirect #临时重定向,重写完成后以临时重定向将新的URL返回给客户端 location / { root /data/nginx/html; rewrite http://www.nginx.com redirect; }
permanent #永久重定向,以永久重定向的方式返回新的URL给客户端 location / { root /data/nginx/html; rewrite http://www.nginx.com permanent; }
last #重写完成后停止对当前URI在当前location中后续的其他重写操作,而后对新的URL启动新的一轮重新检查 (不建议在location中配置) location /last { root /data/nginx; rewrite ^/last/(.*) /test1/$1 last; } location = /test1/index.html { return 999 “new test1” }
break #重写完成后停止对当前URL在当前location中后续的其他重写操作,而后直接将匹配结果返回给客户端即结束循环并返回数据给客户端 (建议在location中配置) location /break { root /data/nginx; rewrite ^/break/(.*) /test1/$1 break;
到此结束,不会返回后面,只会显示test1内容,不会显示return的内容
rewrite ^/test1/(.*) /test2/$1 break;
} location = /test1/index.html { return 999 “new test1” }
- 自动跳转HTTPS
```shell
server {
listen 80;
listen 443 ssl;
ssl_certificate /apps/nginx/certs/www.nginx.com.crt;
ssl_certificate_key /appas/nginx/certs/www.nginx.com.crt;
ssl_session_cache shared:sslcache:20m;
ssl_session_timeout 10m;
server_name www.nginx.com;
location / {
root /data/nginx/html;
if ( $scheme = http ){
rewrite / https://www.nginx.com permanent;
}
}
}
判断文件是否存在
location / {
root /data/nginx/html;
if ( !-f $request_filename ){
rewrite (.*) http://www.nginx.com/index.html;
}
}
文件盗链 ```shell
盗链就是在自己页面上引用其他网页的文件资源
当文件引用其他站点的资源时,开启json日志查看日志信息
防盗链实现原理就是将请求的refer信息进行检查,开启允许的请求,其余请求全部拒绝
location ^~ /images { root /data/nginx/html; vaild_referers none blocked server_names .nginx.com www.nginx. ~.google. ~.baidu.; if ( $invalid_referers ) { return 403; } } ```