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解析的程序文件

相关推荐
LH_R8 小时前
OneTerm开源堡垒机实战(四):访问授权与安全管控
运维·后端·安全
Raymond运维9 小时前
MariaDB源码编译安装(二)
运维·数据库·mariadb
JuiceFS1 天前
从 MLPerf Storage v2.0 看 AI 训练中的存储性能与扩展能力
运维·后端
chen9451 天前
mysql 3节点mgr集群部署
运维·后端
LH_R1 天前
OneTerm开源堡垒机实战(三):功能扩展与效率提升
运维·后端·安全
dessler1 天前
Hadoop HDFS-高可用集群部署
linux·运维·hdfs
少妇的美梦2 天前
logstash教程
运维
chen9452 天前
k8s集群部署vector日志采集器
运维
chen9452 天前
aws ec2部署harbor,使用s3存储
运维
東雪蓮☆2 天前
深入理解 LVS-DR 模式与 Keepalived 高可用集群
linux·运维·服务器·lvs