Nginx代理规则总结

2023-11-17

说明

更新时间:2022/6/17 18:22

本文记录Nginx代理常见的几种规则,例如location,proxy_pass

本文仅为记录学习轨迹,如有侵权,联系删除

一、location

符号 说明
location = /uri = 开头表示精确匹配,只有完全匹配上才能生效
location ^~ /uri ^~ 开头对 URL 路径进行前缀匹配,并且在正则之前
location ~ pattern ~ 开头表示区分大小写的正则匹配
location /uri 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后,如果没有正则命中,命中最长的规则
location / 通用匹配,任何未匹配到其它 location 的请求都会匹配到,相当于 switch 中的 default

匹配的顺序如下,优先级由高到低

= 表示精确匹配
 
^~ 表示uri以某个常规字符串开头,大多情况下用来匹配url路径,nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格,即所见即所得)。
 
~ 正则匹配(区分大小写)
 
~* 正则匹配(不区分大小写)
 
!~ 和 !~*  分别为区分大小写不匹配及不区分大小写不匹配 的正则
 
/ 任何请求都会匹配

首先匹配 =,其次匹配 ^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

这里简单举例说明一下匹配规则的优先级
在这里插入图片描述

二、proxy_pass

经过实际,大概可以分为以下4种情况

(1)proxy_pass包括ip和资源路径,结尾没有/

location /api {
	proxy_pass    http://127.0.0.1:8081/file/upload;
}

访问:http://127.0.0.1/api 
代理:http://127.0.0.1:8081/file/upload

注:第一和第二种其实可以归为一类,都是只要匹配到/api ,就直接跳转proxy_pass的url

(2)proxy_pass包括ip和资源路径,结尾有/

location /api {
	proxy_pass    http://127.0.0.1:8081/file/upload/;
}

访问:http://127.0.0.1/api
代理:http://127.0.0.1:8081/file/upload/

注:第一和第二种其实可以归为一类,都是只要匹配到/api ,就直接跳转proxy_pass的url

(3)proxy_pass只包括ip,结尾有/

location /api {
	proxy_pass    http://127.0.0.1:8081/;
}

访问:http://127.0.0.1/api/user/datail
代理:http://127.0.0.1:8081/user/datail

注:这种匹配到api之后,会自动在代理的ip,即proxy_pass指定的ip上面加上api后面的值

(4)proxy_pass只包括ip,结尾没有/

location /api {
	proxy_pass    http://127.0.0.1:8081;
}

访问:http://127.0.0.1/api/user/datail
代理:http://127.0.0.1:8081/api/user/datail

注:这种匹配到之后会自动在代理的ip,即proxy_pass指定的ip上面加上location的值,再加上api后面的值

(5)root和alias

1、root 指定文件根文件夹对应的/URL 路径
2、alias 指令就是将 URL 重新映射到根位置以外的其他目录
例如配置:
在这里插入图片描述
目录结构如下
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三、关于nginx配置文件的字符编码

有些时候我们正常在nginx配置文件上面写配置,明明配置语法没有错,但是ngnix就是代理失败或者报错,这个时候要检查两个东西

  1. 检查配置文件中是不是有非法的空格之类的字符,配置文件第一行的server后面不要有空格
  2. 字符编码问题,nginx是utf-8非bom编码的,最好是在本地先用notepad++编辑,然后利用notepad++把字符转为utf-8非bom编码,最后再上传到服务器 在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx代理规则总结 的相关文章

  • Nginx - 自定义 404 页面

    Nginx PHP 在 fastCGI 上 对我来说非常有用 当我输入不存在的 PHP 文件的路径时 我不会得到默认的 404 错误页面 任何无效的 html 文件都会出现该错误页面 而只会得到 未指定输入文件 如何自定义此 404 错误页
  • 当建立 TLS / LDAP 或 TLS / HTTP 连接时,线路上会发生什么?

    我正在重新表述我的问题 希望能得到更好的答复 我问了类似的问题这里服务器故障 https serverfault com questions 178561 what are the exact protocol level differen
  • 如何使用代理将 boost::asio 连接到 HTTPS 服务器?

    在我们的应用程序中 我们使用 boost asio 来使用 HTTP 和 HTTPS 进行连接 我们还可以使用 HTTP 代理 现在我需要使用代理添加对 HTTPS 服务器的支持 我研究了相当多的样本 发现所需的步骤似乎是 创建到代理的 H
  • 通过 HTTPS 包含 Twitter Widgets.js

    当我们包含以下内容时 我在我们网站上的 HTTPS 服务页面上的混合内容方面遇到了一个小问题http platform twitter com widgets js http platform twitter com widgets js
  • 我可以在 Nginx Conf 中添加多少个服务器块

    知道我可以在 Nginx 配置中添加多少个服务器块吗 我需要将它用于具有多个子域的反向代理 每个客户端一个子域 它能成功支持 10 000 个服务器块吗 有没有相关的基准研究 这实际上并不是一个你有多少人的问题can但你有多少 能够妥善处理
  • PhantomJS 无法打开 HTTPS 站点

    我使用以下基于 loadspeed js 示例的代码来打开一个 https 站点 该站点也需要 http 服务器身份验证 var page require webpage create system require system t add
  • HTTP 到 HTTPS 301 重定向代码不起作用,显示重定向过多

    我正在为我的网站之一使用 Bluehost 最近 最近 我已将我的网站从 HTTP 迁移到 HTTPS 之后 我使用了不同的代码 包括以下代码 在我的网站上强制使用 HTTPS SSL Rewrite RewriteEngine On Re
  • 找不到 NGINX brew 安装命令

    I do brew install nginx and get gt Downloading http nginx org download nginx 1 2 2 tar gz Already downloaded Library Cac
  • nginx 和 uwsgi 非常大的文件上传(>3Gb)

    也许有人知道该怎么做 我正在尝试上传大于 3Gb 的文件 没问题 如果我使用以下配置上传高达 2Gb 的文件 Nginx client max body size 5g client body in file only clean clie
  • 连接到上游时 Nginx 错误:(13:权限被拒绝)

    我在我的中收到此错误nginx error log file 2014 02 17 03 42 20 crit 5455 0 1 connect to unix tmp uwsgi sock failed 13 Permission den
  • NGINX 上的 SSL 终止

    我已经购买了 SSL 证书 并在验证模数时正确地将其捆绑在一起 即https kb wisc edu middleware 4064 https kb wisc edu middleware 4064 那么哈希值是相同的 我已将证书和密钥移
  • 如何修复 Nginx 自动 301 重定向到带有尾部斜杠的相同 URL?

    当我尝试将 Web 应用程序的子目录中的索引文件访问到相同的 URL 但附加了斜杠 时 Nginx 出现了不良行为 它正在重新路由请求 我有一个简单的 Web 应用程序 其中设置了一个根目录和其中的许多子目录 每个子目录中都有一个 inde
  • Django HTTPS 和 HTTP 会话

    我使用 Django 1 1 1 和 ssl 重定向中间件 通过 HTTPS 创建的会话数据 身份验证等 在站点的 HTTP 部分中不可用 无需将整个站点设置为 HTTPS 即可使其可用的最佳方法是什么 这是设计使然 您无法轻易更改 当通过
  • PHP cURL 在本地工作,在 AWS 服务器上出现错误 77

    最新更新 脚本作为管理员用户通过 SSH shell 作为 php script php 成功运行 当由 nginx 用户运行时 curl 命令无法执行 https 请求 所以我猜测这是nginx用户无法正确使用curl的问题 我已经检查了
  • 阻止 ingress-nginx 负载均衡器上的特定路径

    我有许多指向入口控制器 IP 的域 我想阻止所有域 站点的 特定路径 有没有办法做到这一点 我可以用nginx ingress kubernetes io configuration snippet 对于每个站点 但正在寻找同时处理所有站点
  • Nginx url 限制 502 网关

    我有一个问题 但我接受绕过此功能的其他建议 基本上 我在 get 请求中向我的服务器发送大约 3000 个字符的大行文本 然后服务器将其作为 url 中的参数发送到谷歌翻译 问题 当 url gt 1900 个字符时 Nginx 会抛出 5
  • 使用查询参数值进行 NGINX 301 重定向

    我想重定向example com lang en to example com en 我正在使用 Python Django 我的服务器运行 Plesk Nginx 我尝试像这样在我的网页上重定向 但这是行不通的 rewrite lang
  • 使用 RedirectToAction 时如何设置协议?

    我的目标操作需要 https 我已经有一个过滤器 如果请求通过 http 传入 它会重定向到 https 但我更愿意从一开始就通过 https 发送请求 EDIT Darin 给出了一个答案 现在更新为其他内容 他问为什么我无论如何都通过
  • 使用 IIS 7.5 的特定页面的 HTTPS URL 重写规则

    我正在尝试在 IIS 7 5 中进行 URL 重写 以重定向到 HTTPS 以获得 单页 域的其余部分应保留 HTTP 为此 我正在编辑 Web config 文件 有人可以告诉我我在做什么吗 以下规则错误
  • 重定向而不是 404 错误页面 - 状态代码不起作用 (Nginx)

    我目前正在迁移到 nginx 服务器 我尝试将其放入名为的 404 ErrorDocument 中404 php 如果我现在尝试访问http mydomain com 404 php 这按预期工作 它将我重定向到 Google 但是一旦我尝

随机推荐

  • Qt5Error:msvc-version.conf loaded but QMAKE_MSC_VER ins‘t set

    错误描述 msvc version conf loaded but QMAKE MSC VER ins t set 解决方案 这种情况一般都是修改了项目的配置之后出现的 也就是 qmake stash文件出错 删除这个文件再进行重新编译即可
  • 基于python的布尔盲注爆破脚本(sqli-libs第八关)

    写这个脚本的原因是因为布尔爆破步骤的繁琐 因此写下这个半自动化脚本来提升效率 只需输入url和标志词便可开始爆破 下面结合sqli libs第八关来详细说明 这一关是布尔盲注 布尔盲注用于页面没有回显的情况下 但是心细的同学会发现当我们注入
  • 使用Microsoft.Reporting. WebForms中ReportViewer报表查看器(Server方式)

    添加Web Reference http
  • Flex程序编译

    Makefile三要素 目标 依赖 命令 详解可见makefile 编写 周北 CSDN博客 makefile 编写 Makefile中常用函数和自动化变量 wildcard 扩展通配符 例 OBJECTS wildcard o 该找到目标
  • C++构造函数中不调用虚函数的原因

    今天在看网上一篇帖子的时候看到这个问题 试讲关于C 对象虚函数表和类型信息的 RTTI 的 正好看到了如下内容 这个是为什么在构造函数中不能调用虚函数的原因 因为任何时候在基类中的虚函数调用 都不可能到达子类的实现 因为子类的虚表初始化是在
  • [docker]搭建elasticsearch服务

    1 拉取镜像 docker pull elasticsearch 8 7 0 如果需要其他版本的话 访问 Dockerhttps hub docker com ela
  • QT从入门到入土(四)——文件的读写操作

    引言 文件的读写是很多应用程序具有的功能 甚至某些应用程序就是围绕着某一种格式文件的处理而开发的 所以文件读写是应用程序开发的一个基本功能 Qt 提供了两种读写纯文本文件的基本方法 用 QFile 类的 IODevice 读写功能直接进行读
  • uniapp中的分享功能实现(APP,小程序,公众号)

    uniapp中的分享功能实现 APP 小程序 公众号 1 APP端的分享 app端的分享可以直接使用uniapp封装的方法uni share uni app的App引擎已经封装了微信 QQ 微博的分享SDK 开发者可以直接调用相关功能 可以
  • Android交叉编译OpenCV+FFmpeg+x264的艰难历程

    前言 如果你没有兴趣看完本文 只想获得可编译的代码或编译后的产物 可以直接点击下面的链接 跟随步骤编译代码或直接下载我编译好的产物 注 编译顺序要按照 x264 gt FFmpeg gt OpenCV 这样来 x264 FFmpeg Ope
  • 使用less处理重复性background-image定位问题

    1 问题描述 使用angular的列表循环解释问题 其他框架类似 css上面使用flex布局 index html代码 div class container div class item div class div p class ite
  • CH3-HarmonyOS开发基础

    文章目录 背景 目标 一 APP 1 1 APP包组成 1 2 APP和HAP结构 二 Ability 2 1 Ability 2 2 pack info 三 libs库文件 3 1 HAR 四 resources资源文件 4 1 reso
  • shiro框架---关于用户登录退出接口的介绍

    接上一篇文章shiro框架 shiro配置用户名和密码的注意 项目已分享到GitHub上 如果需要的可以看下 springboot shiro项目Git下载地址 在我前几篇文章里有shiro配置的文件下载包 下载后里边有四个配置文件Shir
  • 618省心凑背后的新算法——个性化凑单商品打包购推荐

    作为购物导购链路的一个重要环节 凑单旨在快速帮助用户找到达成某个满减门槛 比如满300减50 的商品 完成性价比最高的跨店组合结算 前言 背景 凑单是一个历史悠久的场景 伴随着长期优化并不断升级 为用户决策提供了便捷通道 作为购物导购链路的
  • Nginx部署前端,并转发2个后台,实现负载均衡

    一 vue打包 cmd进入项目目录 执行 npm run build 会在改目录生成dist文件 假设dist目录是 D dist 二 部署 下载nginx 修改nginx conf 在http 中加入 upstream myapp1 se
  • 在SQL中直接使用存储过程查询返回的结果集

    在实际使用存储过程是 有时我们希望先判断存储过程的返回结果集是否有记录 然后走不同的业务逻辑 这是就需要在SQL语句中直接读取到存储过程的返回结果集 方式如下 先按照存储过程结果集定义一个变量 declare tbl table 门诊号 v
  • js预编译(与C预处理区别)

    目录 1 函数体内 例 2 全局 注 window 属性和 imply global属性 3 全局和函数体内结合 优先顺序 例1 例2 例3 重要提示 第一次学的时候以为和C预处理差不多 看了下才发现区别还蛮大的 例1 test 打印出 a
  • 说一下Photo服务器

    误打误撞学习了一下Photo服务器 自己去百度上找 有些问题大家也没说清楚 所以 在这里补充说明一下 现在Photo官网已经更新到4 0 29 说不定有更新了 但是很多教程都是Photo3 0的版本 虽然大体还是差不多 但是对于初学者来说还
  • mysql useunicode_jdbc连接mysql 为什么在连接时已经这样设置了 ?useUnicode=true&characterEncodin...

    jdbc连接mysql 为什么在连接时已经这样设置了 useUnicode true characterEncoding UTF 8 autoReconnect true maxReconnects 10 autoReconnectForP
  • Python 并发系列 2 —— 各种并发方案的选择

    目录 二 异步 Python 不同形式的并发 2 1 术语定义 同步 Sync vs 异步 Async 并发 Concurrency vs 并行 Parallelism 2 2 线程 Threads 进程 Processes Threads
  • Nginx代理规则总结

    Nginx代理规则总结 说明 一 location 二 proxy pass 1 proxy pass包括ip和资源路径 结尾没有 2 proxy pass包括ip和资源路径 结尾有 3 proxy pass只包括ip 结尾有 4 prox