• ngx_http_rewrite_module模块

    • if指令

      1. location /main {
      2. default_type text/html;
      3. if ( $scheme = http ) {
      4. rewrite https://www.nginx.com;
      5. }
      6. }
      7. -e 判断请求目录或者文件是否存在
      8. -x 判断请求文件是否具有可执行权限
      9. -d 判断请求的目录是否存在
      10. -f 判断文件是否存在
    • set指令

      1. location /main {
      2. root /data/nginx/html;
      3. set $name abc;
      4. echo $name;
      5. }
    • break指令

      1. location /main {
      2. root /data/nginx/html;
      3. set $name abc;
      4. echo $name;
      5. break;
      6. echo $scheme;
      7. }
      8. #处于break前的指令生效,后续不执行
    • return指令

      1. return code ;#返回状态码
      2. return code "text";#返回状态码及响应内容
      3. return code URL ;#返回客户端的URL地址
    • rewrite_log

      1. location /main {
      2. index index.html;
      3. default_type text/html;
      4. set $name magedu;
      5. echo $name;
      6. rewrite_log on;
      7. break;
      8. set $my_port $server_port;
      9. echo $my_port;
      10. }
      11. #其中 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的内容

  1. rewrite ^/test1/(.*) /test2/$1 break;

} location = /test1/index.html { return 999 “new test1” }

  1. - 自动跳转HTTPS
  2. ```shell
  3. server {
  4. listen 80;
  5. listen 443 ssl;
  6. ssl_certificate /apps/nginx/certs/www.nginx.com.crt;
  7. ssl_certificate_key /appas/nginx/certs/www.nginx.com.crt;
  8. ssl_session_cache shared:sslcache:20m;
  9. ssl_session_timeout 10m;
  10. server_name www.nginx.com;
  11. location / {
  12. root /data/nginx/html;
  13. if ( $scheme = http ){
  14. rewrite / https://www.nginx.com permanent;
  15. }
  16. }
  17. }
  • 判断文件是否存在

    1. location / {
    2. root /data/nginx/html;
    3. if ( !-f $request_filename ){
    4. rewrite (.*) http://www.nginx.com/index.html;
    5. }
    6. }
  • 文件盗链 ```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; } } ```