Nginx location

  • location块是nginx配置文件中,配置在http块中的server块中,匹配的是uri

location匹配uri的方式 :

  1. 精确匹配: location = /[ ...}

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

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

匹配的规则:

  • = :精确匹配,完全匹配,错一个字都匹配到,必须完全一致。

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

  • ~ :区分大小写的匹配

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

  • ~$ : 结束位置

  • !~ :区分大小写的匹配,取的逻辑非,取反

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

    注 :location 越精确,越匹配(优先级越高)

匹配的优先级 :

  • 精确匹配 最高

  • 正则匹配 次之

  • 通用匹配 最后

location = > location ^- > locatuin -* > location /test/ > location /

一旦匹配到了之后,不再向下匹配.

生产中location 匹配规则;

  • 第一个必选规则: location = /

    直接匹配根网站。通过域名访问网站首贞是最多的。使用精确匹配,可以加快处理速度。首贞。

  • 第二个规则 : location ^- /static/ f 处理静态文件的请求,目录匹配.

  • 第三个规则 :location -*.(gifljpglpnglcss)、

    四配图片用的

  • 第四个通用规则 :

location / {

proxy_pass 指定代理,反向代理,转发动志请求。.php .jsp的请求,发到后端

}

rewrite 重写、重定向

  • rewarite使用nginx的全局变量或者自己设置的变量,结合正则表达式和标志位实现url的重定向

rewrite 执行顺序 :

  1. 执行server块当中的rewrite

  2. 执行location匹配

  3. 如果location当中还有rewrite,继续执行。

不停rewrite,死循环,只能10次,然后报错,报错的状态码: 500

rewrite的语法:

rewrite <regex> <replacemnet> [flag]

rewrite :开始重定向 regex:正则匹配的规则 replacemnet:表示跳转后的内容,你要重定向的url flag :标志位 (4种)

  • permanent :永久重定向: 返回码301 ,永久性的变更url,搜索引擎会转移他的权重以及排名到新的URL.

  • redirect :临时重定向,显示的返回码: 302 ,用于短期变更(网站维护,或者升级更新)。搜索引擎是不是转移权重和排名到新的url

  • break :不会改变url而且只会请求一次、跳出当前匹配 ,即刻终止

  • last :本条负责匹配完成后,继续向下匹配,只要有 last ,就继续匹配,,配置的时候要注意,防止死循环

    如 :日志显示:
    rewrite or internal redirection cycle while processing
    #表示写成了死循环,一直在匹配 location,10次,返回码500.

nginx的变量 :

  • 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头部的值传递给后端服务器。

如果没有在其他地方显示设置 content-type的头字段,默认响应为text/plain; 纯文本格式

test/html :默认的响应类型,也就是我们说的页面

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

test/css :css样式表的 类型 .css

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

相关推荐
苹果醋32 分钟前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
二十雨辰16 分钟前
[linux]docker基础
linux·运维·docker
Jason-河山1 小时前
【自动化更新,让商品信息跳舞】——利用API返回值的幽默编程之旅
运维·自动化
雨雪飘零1 小时前
Windows系统使用OpenSSL生成自签名证书
nginx·证书·openssl
lihuhelihu1 小时前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算
哲讯智能科技1 小时前
SAP Business One市场价格解析
运维·sap·erp
山东布谷科技官方1 小时前
布谷直播源码部署服务器关于数据库配置的详细说明
运维·服务器·数据库·直播系统源码·直播源码·直播系统搭建·直播软件开发
One_Blanks2 小时前
渗透测试-Linux基础(1)
linux·运维·安全
yanwushu2 小时前
Xserver v1.4.2发布,支持自动重载 nginx 配置
mysql·nginx·php·个人开发·composer
爱吃喵的鲤鱼2 小时前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++