通过nginx实现请求重定向或反向代理

时间:2025-02-28 07:18:18

通过nginx实现链接重定向

如果只是单纯地借助nginx实现重定向,可以通过rewrite来实现。

需求:
请求 /foo/xxx时,重定向到 另一个站点的/bar/xxx

server {
        listen  80;
        # ...
	    rewrite ^/foo/(.*)$ /bar/$1 break;
}

rewrite的第一个参数是一个正则表达式,()之内是一个capture,捕获到的内容会放到变量$1中。第二个参数使用了$1

通过nginx实现反向代理

需求:
请求 /foo/xxx时,链接地址不变,但实际返回的是另一个站点的/bar/xxx 接口的响应结果。

server {
        listen  80;
        # ...
        location /foo {
            rewrite ^/foo/(.*)$ /bar/$1 break;
            proxy_pass /;
        }
}

这里面通过rewrite实现了请求路径的修改,通过proxy_pass实现了反向代理。

最终表现出来的行为就是,请求地址看上去没有变化,但实际请求的是另外一个地址。

当借助nginx避免浏览器跨域时,可以使用这个方案。