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```shellserver {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; } } ```
