当使用Nginx作为反向代理时,有时需要去除请求URL中的特定前缀,然后将剩余部分传递给后端服务器。以下是几种常见的去除前缀的配置方法:
location /prefix/ {
rewrite ^/prefix/(.*) /$1 break;
proxy_pass http://backend_server;
}
rewrite ^/prefix/(.*) /$1 break;
会去除/prefix/
前缀$1
表示正则表达式中第一个捕获组的内容break
表示停止处理当前rewrite模块的指令集location /prefix/ {
proxy_pass http://backend_server/;
}
注意proxy_pass末尾的斜杠/
,这表示将去除匹配到的/prefix/
部分。
location ~ ^/prefix/(.*)$ {
proxy_pass http://backend_server/$1;
}
location /prefix {
rewrite ^/prefix(.*) $1 break;
proxy_pass http://backend_server;
}
server {
listen 80;
server_name example.com;
location /api/ {
# 去除/api/前缀
rewrite ^/api/(.*) /$1 break;
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
rewrite
时,通常需要加上break
或last
标志以避免循环重写curl -v
来查看实际发送到后端的请求以上方法可以根据您的具体需求选择使用,通常方法1和方法2是最常用的解决方案。