51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

nginx 以 “/xxx“ 开头的请求代理中去掉xxx部分 ($ 的意思)

nginx 发请求地址地址 去掉部分路径 {#articleContentId}

案例1:

例如如果你想将以 "/api" 开头的请求代理转发到 http://127.0.0.1,但去掉 "/api" 部分,你可以使用 Nginx 的 rewrite 指令。以下是相应的配置:

location /api {
    # 重写请求,去掉 "/api" 部分
    rewrite ^/api(.*)$ $1 break;
    # 使用代理转发请求
    proxy_pass http://127.0.0.1;
}

案例2:

比如 请求 /aip/v3/upgrade , 代理后为, xx/v3/upgrade

Nginx的rewrite指令_nginx rewrite 'api-CSDN博客

	server {
        listen       80;
        server_name  api.leyou.com;

        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    	# 上传路径的映射
		location /api/upload {	
			proxy_pass http://127.0.0.1:8082;
			proxy_connect_timeout 600;
			proxy_read_timeout 600;
			
			rewrite "^/api/(.*)$" /$1 break; 
        }
		
        location / {
			proxy_pass http://127.0.0.1:10010;
			proxy_connect_timeout 600;
			proxy_read_timeout 600;
        }
    }

首先,我们映射路径是/api/upload,而下面一个映射路径是 / ,根据最长路径匹配原则,/api/upload优先级更高。也就是说,凡是以/api/upload开头的路径,都会被第一个配置处理

proxy_pass:反向代理,这次我们代理到8082端口,也就是upload-service服务

rewrite "^/api/(.*)$" /$1 break,路径重写:

"^/api/(.*)$":匹配路径的正则表达式,用了分组语法,把/api/以后的所有部分当做1组

/$1:重写的目标路径,这里用$1引用前面正则表达式匹配到的分组(组编号从1开始),即/api/后面的所有。这样新的路径就是除去/api/以外的所有,就达到了去除/api前缀的目的

break:指令,常用的有2个,分别是:last、break

last:重写路径结束后,将得到的路径重新进行一次路径匹配
break:重写路径结束后,不再重新匹配路径。
我们这里不能选择last,否则以新的路径/upload/image来匹配,就不会被正确的匹配到8082端口了

案例3:

下面是一个简单的例子,它将所有以/old开头的URL重写为以/new开头的URL:

server {
    listen 80;
    server_name example.com;
 
    location /old {
        rewrite ^/old(.*)$ /new$1 last;
    }
 
    location /new {
        # 处理新URL的配置
    }
}

如果你想要永久重定向(返回状态码301),可以使用permanent标志:

server {
    listen 80;
    server_name example.com;
 
    location /old {
        rewrite ^/old(.*)$ /new$1 permanent;
    }
}

$的意思

^ :匹配输入字符串的起始位置

$ :匹配输入字符串的结束位置^ :匹配输入字符串的起始位置

先看一个案例:

rewrite ^/(user_\d)/(\d).html$ https://$host/?$1 permanent;

上面是我写的重写规则,先说$代表的是参数,所以一定是 () 包含的

() : 用于匹配括号之间的内容,通过$1、$2调用

$1 就是 user_\d

$2 就是 \d

正则表达式汇总 nginx :连接

举个例子

https://www.example.com/user_1/2.html

这里$1 就是 user_1

$2就是2
赞(8)
未经允许不得转载:工具盒子 » nginx 以 “/xxx“ 开头的请求代理中去掉xxx部分 ($ 的意思)