一切福田,不離方寸,從心而覓,感無不通。

教你nginx跳转配置的四种方式

前言 最近工作用到了nginx,但是路由配置特殊,业务场景复杂,因此整理了集中nginx跳转的配置方式,如servername的正则,location的匹配顺序,rewrite和proxy的示例,相信总有一种满足你的需求。 一、配置server对应的域名 server name 为虚拟服务器的识别路径。因此不同的域名会通过请求头中的HOST字段,匹配到特定的server块,转发到对应的应用服务器中去。server_name匹配规则:后面可以跟多个域名,第1个是主域名 1.1、精确匹配 如下nginx配置

请求结果 curl http://my.test.com:8080 返回:I am mytest! curl http://test1.com:8080 返回:I am test1! 1.2、正则表达式 以*通配符开始的最长字符串,如下示例

以*通配符结束的最长字符串

通配符名字只可以在名字的起始处或结尾处包含一个星号,并且星号与其他字符之间用点分隔。所以,“my..com“都是非法的。 例如 :server_name my..com; 报以下错误: nginx: [emerg] invalid server name or wildcard "my.*.com" on 0.0.0.0:8080 匹配正则表达式

解释说明 ~: 表示大小写敏感的正则; ^:匹配字符串的开始; {.+}:换行符以外的任意自读重复一次活更多次; (): 分组与取值; :表示转义; serno:设置提取的变量; $:匹配字符串的结束; 请求结果

server_name的配置顺序是怎样的呢? 按照如下顺序匹配: 匹配顺序-> ->精确匹配 ->*在前的域名 ->*在后的域名 ->按文件中的顺序匹配 ->default server:第一个,listen指定default 二、配置location 2.1、Location 匹配规则:仅匹配URI,忽略参数

  匹配的正则符号如下: = 严格匹配。如果请求匹配这个location,那么将停止搜索并立即处理此请求 ~ 区分大小写匹配(可用正则表达式) ~* 不区分大小写匹配(可用正则表达式) !~ 区分大小写不匹配 !~* 不区分大小写不匹配 ^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式 2.2、举例

2.3、匹配顺序如下图 按照上面的规则配置了如下location

curl […]

龙生   12 Jun 2023
View Details