location匹配有三种方法:完全匹配,正则匹配,通用匹配。

        精确匹配:location = / { ... }

        正则匹配:location - / { ... }

        一般匹配:location / { ... }

location通过uri来匹配资源。uri:统一资源标识符,是一种字符串标准,用于表示抽象的或者物理资源。

匹配规则:

        =:精确匹配

        ^~:匹配普通字符,但是是前缀匹配,

        ~:区分大小写的匹配

        ~*:不区分大小写的匹配

        !~:区分大小写的匹配,取反

        !~*:不区分大小写的取反

匹配优先级:越精确优先级越高。

        locatio =  >  location ^-  >  location ~*  >  location /test/  >  location /

生产中location匹配规则:

        1,必选规则:location = / {} 直接匹配根网站。通过域名访问网站是最多的,使用精确匹配可以加快处理速度。

        2,location ^~ /staic/ {}   处理静态文件的请求,目录匹配。

        3,location ~* .(gif|jpg|png|css) 匹配图片用的.

        4,通用规则:location / {  proxy_pass  }  转发动态请求,反向代理,将php,.Jsp请求转发到后端。

rewrite:重写,重定向

        rewrite使用NGINX的全局变量或者是自己设置的变量媒介和正则表达式和标志位实现url的重定向。

x_forwarded_for:用于获取HTTP请求头中的X-Forwarded-For字段的值。

X-Forwarded-For是一个常见的HTTP请求头,通常由代理服务器添加,用于指示原始客户端的IP地址。

proxy_set_header X-Forwarded-For $remote_addr; 这个是传给后端。

X-Real-IP:头部为客户端真实IP地址

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header指令来设置X-Real-IP头部的值为$remote_addr,即客户端的真实IP地址。

这样,Nginx会将客户端的真实IP地址作为X-Real-IP头部的值传递给后端服务器。

        $remote_addr:客户端的IP地址。

        $remote_port:客户端的端口号。

        $server_addr:服务器的IP地址。

        $server_port:服务器的端口号。

        default_type text/plain;

表示如果没有在其他地方显示设置:content-type的头字段,默认响应为text/plain;纯文本格式。text/html:默认的响应类型,也就是我们说的页面。

text/plain:纯文本格式,类似于.txt文件

text/css: CSs样式表的类型,.css

text/javascript : java脚本,.js。前端文件,也可以理解是java解析的程序文件。|

Reweite使用NGINX的全局变量或者是自己设置的变量结合正则表达式和标志位实现url的重定向。

Rewrite执行顺序:

  1. 执行server块中的rewrite
  2. 执行location匹配
  3. 如果location当中还有rewrite,继续执行。
  4. 不停rewrite,会死循环,循环10次后报错500

Rewrite语法:

        Rewrite <regex> <replacemnet> [flag]

        Rewrite:开始重定向

        Regex:正则匹配的规则

        Replacemnet:表示跳转后的内容,你要重定向的url

        Flag:标志位。

标志位:last,break,permanent,redirect。

        last #表示完成rewrite,之后继续向下匹配新的location URI规则,浏览器地址栏URL地址不变。

        break #本条规则匹配完成后,终止匹配, 不再匹配后面的规则,完成重写指令,浏览器地址栏URL地址不变。

        redirect #返回302临时重定向,浏览器地址会显示跳转新的URL地址。

        permanent #返回301永久重定向,浏览器地址会显示跳转新的URL地址。