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

相关推荐
小白跃升坊17 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
杨江17 小时前
seafile docker安装说明
运维
好好沉淀17 小时前
Docker开发笔记(详解)
运维·docker·容器
zmjjdank1ng17 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.17 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
树℡独17 小时前
ns-3仿真之应用层(三)
运维·服务器·ns3
VekiSon18 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
skywalk816318 小时前
尝试在openi启智社区的dcu环境安装ollama最新版0.15.2(失败)
linux·运维·服务器·ollama
熊猫钓鱼>_>19 小时前
动态网站发布部署核心问题详解
前端·nginx·容器化·网页开发·云服务器·静态部署
MMME~19 小时前
Ansible模块速查指南:高效定位与实战技巧
大数据·运维·数据库