原文:https://ichochy.com/posts/software/20231125.html


nginx location 正则错误写法

location 错误的写法

匹配请求目录地址 /555

server {
location ~ ^/\d{2,3}$ {
……
}
}

分析正则

location ~ ^/\d{2,3}$

~     为开启正则匹配,这个不能少
^ 为字符的开始匹配,字符以后面的规则开始
/ 为第一个匹配字符 /
\d 匹配数字
{2,3} 限定数字的个数 2-3 个
$ 为字符的结束匹配,字符以前面的规则结束

上面的会出现错误 pcre_compile() failed: missing
正则解析失败,正则表达式正常是没有问题的,让人很误解
但在nginx中不能这样写,需要加上双引号(""

location 正则的正确写法

location ~ "^/\d{2,3}$"

注意:中/英文输入法,需要英文符号的双引号("")

正则规则

~         表示执行一个正则匹配,区分大小写
~* 表示执行一个正则匹配,不区分大小写
^~ 表示普通字符匹配,不使用正则匹配,一般用来匹配目录
= 进行普通字符精确匹配
@ "@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files
!~ 表示正则不匹配,排除正则的匹配,区分大小写
!~* 表示正则不匹配,排除正则的匹配,不区分大小写
.       匹配除换行符以外的任意字符
? 重复0次或1次
+ 重复1次或更多次
* 重复0次或更多次
\d 匹配数字
^ 匹配字符串的开始
$ 匹配字符串的结束
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n-m次
[a] 匹配单个字符a
[a-z] 匹配a-z小写字母的任意一个

nginx 反向代理不能使用变量

server {
location ~ "^/(\d{2,3})$" {
proxy_pass https://$1.ichochy.com
……
}
}

问题来了

上面的配置没有生效,总是报错
Web 访问出现 502 Bad Gateway 错误,nginx 报错
proxy_pass 使用变量时会出现没有解析器解析域名的错误

日志出现如下的错误:
no resolver defined to resolve ichochy.com

修正错误

没有解析器就给它指定一个

resolver 8.8.8.8;

完整的配置信息

server{
location ~ "^/(\d{2,3})$" {
resolver 8.8.8.8;
proxy_pass https://$1.ichochy.com
……
}
}

例: 请求地址https://ichocy.com/555
location匹配到 /555,而$1代表的就是555,所以https://$1.ichochy.com就是https://555.ichochy.com

注:
$1 代表正则第一个小括号()中匹配的信息
$2 代表正则第二个小括号()中匹配的信息,以此内推 $3 ……

这样,请求地址 https://ichocy.com/555 ,就被反向代理到 https://555.ichochy.com

修改配置文件

# nginx 配置文件
vi /etc/nginx/nginx.conf
# 网站配置文件
vi /etc/nginx/sites-available/default

查看日志

# 错误日志
tail -f /var/log/nginx/error.log
# 请求日志
tail -f /var/log/nginx/access.log

Nginx 配置(Config)中遇到的错误(Error)的更多相关文章

  1. nginx配置url中带问号的rewrite跳转

    今天收到一个需求,要将一个带查询参数的url跳转到另外一个静态url,安装常规的rewrite规则,如: rewrite ^/a.html?id=67$ http://zt.epython.cn/20 ...

  2. ldap安装配置过程中遇到的错误,以及解决方法

    错误1: [root@openldap openldap]# ldapsearch -LLL-W -x -H ldap://etiantian.org -D "cn=admin,dc=eti ...

  3. nodejs出现events.js:72中抛出错误 Error: listen EADDRINUSE

    <pre>events.js:72 throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE at errnoExce ...

  4. nginx配置过程中出现的问题

    在安装nginx时我们先创建用户useradd -s /sbin/nologin -M nginx 不然会报nginx: [emerg] getpwnam("nginx") fai ...

  5. TFS 2010 配置的时候,提示TF255466错误

    TFS 2010 配置的时候,提示TF255466错误 Error [ System Checks ] TF255466: The configuration process for Team Fou ...

  6. web.config中配置页面出错后跳转指定错误页面

    每当用户访问错误页面时,会出现不友好的404错误,所以为了防止这种不友好,我们在web.config中的<system.web>节点下配置 <customErrors>,在出现 ...

  7. asp.net mvc 3 配置全局错误处理 Web.config中设置CustomError

    摘自: http://www.myexception.cn/web/1130191.html asp.net mvc 配置全局异常处理 Web.config中设置CustomError Web.con ...

  8. f-stack中nginx配置后make出现error: ignoring return value of ‘ftruncate’

    问题 Nginx 配置后 make 出现error: src/os/unix/ngx_process_cycle.c: In function 'ngx_start_worker_processes' ...

  9. nginx中的502错误

    遇到这种情况,首先看一下慢日志 [17-Aug-2015 13:13:43] WARNING: [pool www] child 27780, script '/data/s.com/index.ph ...

  10. 配置web项目出的各种error (安装sql2008错误,网站连接数据库error错误等等)

      一个破error:40 错误搞出了很多莫名其妙的为问题,搞了5天,最后重装系统加上重新配置终于好了. 1. 关于SQL 2008 安装错误 安装之前必须安装VS2008 SP1 安装到最后提示 试 ...

随机推荐

  1. 什么是 CSS 设计模式

    这是转载的,先收藏到我的博客园. 什么是设计模式? 曾有人调侃,设计模式是工程师用于跟别人显摆的,显得高大上:也曾有人这么说,不是设计模式没用,是你还没有到能懂它,会用它的时候. 先来看一下比较官方的 ...

  2. 探秘 MySQL 索引底层原理,解锁数据库优化的关键密码(下)

    上两篇文章<探秘MySQL索引底层原理,解锁数据库优化的关键密码(上)>和<探秘 MySQL 索引底层原理,解锁数据库优化的关键密码(中)>主要讲了MySQL索引的底层原理,且 ...

  3. 一文速通Python并行计算:06 Python多线程编程-基于队列进行通信

    一文速通 Python 并行计算:06 Python 多线程编程-基于队列进行通信 摘要: 队列是一种线性数据结构,支持先进先出(FIFO)操作,常用于解耦生产者和消费者.慢速生产-快速消费场景中,队 ...

  4. 基于Spring Boot的HTTP请求签名验证实现解析

    概述 在分布式系统交互中,API接口的安全性至关重要.本文将深入解析基于Spring Boot实现的HTTP请求签名验证机制,该方案支持GET/POST等多种请求方式,提供时效性验证和数据完整性保障. ...

  5. SpringBoot3整合SpringSecurity6(一)快速入门

    大家好,我是晓凡. 写在前面 不知道小伙伴们在学SpringSecurity过程中有没有和我一样的经历和烦恼. ①看完一篇文章或者一个教程,感觉学会了.但是一到实际项目中就不知道怎么用: ②被Spri ...

  6. DNS滥用如何进行防范?

    在当今数字化浪潮汹涌的时代,域名系统宛如互联网的基石,稳稳承载着将人们日常使用的便捷域名,精准转换为计算机能够识别与处理的IP地址这一关键任务.其重要性不言而喻,然而,随着DNS在全球范围内的广泛普及 ...

  7. uniapp阻止Modal模态框关闭

    要阻止uniapp的Modal模态框关闭,没有找到相关api,但可以通过保存配置立即打开的方式变相实现阻止关闭: const option = { title: "输入礼品券名称" ...

  8. 10个 DeepSeek 神级提示词,建议收藏!

    在当下人工智能飞速发展的时代,DeepSeek 作为一款功能强大的 AI 工具,能够帮助我们实现各种创意和需求.然而,要充分发挥它的潜力,掌握一些巧妙的提示词至关重要.今天,就为大家精心整理了 15 ...

  9. Kotlin 实现类似 C# 的 Event 事件代码

    在c#中,内置了对事件的设计模式,你可以简单的 += 来订阅一个事件. Kotlin 目前我没有发现内置的支持(如果你发现了,请留言告诉我 tansm),但Kotlin 非常方便的运算符重载,自己实现 ...

  10. 阿里云Ansible自动化运维平台部署

    以下是在阿里云平台上基于Ansible实现自动化运维的完整实践指南,整合所有核心操作流程和命令,适配指定的服务器规划: 一.环境规划 主机名 IP地址 角色 操作系统 manage01 192.168 ...