nginx匹配规则 太过爱你忘了你带给我的痛 2022-10-18 01:40 141阅读 0赞 ## location的匹配: ## 匹配模式及顺序举例: * location = /uri =开头表示精确匹配,只有完全匹配上才能生效。 * location ^~ /uri ^~ 开头对URL路径进行前缀匹配,并且在正则之前。 * location ~ pattern ~开头表示区分大小写的正则匹配。 * location ~\* pattern ~\*开头表示不区分大小写的正则匹配。 * location /uri 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后,如果没有正则命中,命中最长的规则。 * location / 通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default。 ## proxy\_pass的匹配 ## https://www.jianshu.com/p/c751250a5112 1. 只包含IP和端口号的,保留路径部分 location /api1/ { proxy_pass http://localhost:8080; } 在访问http://localhost/api1/xxx时,会代理到http://localhost:8080/api1/xxx location / { proxy_pass https://yield.test.com; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 6000; proxy_read_timeout 6000; } 1. 端口号只有带有/的,包括单个/的如proxy\_pass http://localhost:8080/,以及其他路径,比如proxy\_pass http://localhost:8080/abc location /api2/ { proxy_pass http://localhost:8080/; } 当访问http://localhost/api2/**xxx**时,http://localhost/api2/(注意最后的/)被替换成了http://localhost:8080/,然后再加上剩下的xxx,于是变成了http://localhost:8080/**xxx** 另一种情况: location /api5/ { proxy_pass http://localhost:8080/haha; } 当访问http://localhost/api5/**xxx**时,http://localhost/api5/被替换成了http://localhost:8080/haha,请注意这里haha后面没有/,然后再加上剩下的xxx,即http://localhost:8080/haha+xxx=http://localhost:8080/haha**xxx**,奇怪吧。 再一种: location /api/edc-app/ { proxy_pass https://yield.test.com/api/edc-app-lmk/; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 6000; proxy_read_timeout 6000; } /api/edc-app/**xxxxxx** 会变成https://yield.test.com/api/edc-app-lmk/**xxxxxx**
还没有评论,来说两句吧...