求一个反向代理的写法,重写 URL
- 0次
- 2021-05-25 14:22:06
- idczone
server backend: http://backend/a.html
想实现的方法是: 访问 http://a.com/test/a.html 国外服务器反代到 http://backend/a.html
location /test/(.*) {
proxy_pass http://backend/$1;
}
location /test/ {
proxy_pass http://backend;
}
upstream backend{
server backend;
}
目前这样写是不行的,怎么才能实现呢?
location ^~ /test/ {
proxy_pass http://backend/;
}
试了,不行,还是以 http://backend/test/a.html 访问。
你要先在你这边重写 url ,再请求过去。
upstream test_upstream{
server wiki.shajiquan.com;
server 127.0.0.1:9801;
}
server {
listen 9101;
location /test/ {
rewrite /test/(.+)$ /$1 break;
proxy_pass http://test_upstream ;
proxy_redirect off;
}
}
楼主参考这篇吧。
https://segmentfault.com/a/1190000000406581
server {
listen 80;
server_name backednd;
root /path/to/www/root; location / {
rewrite /(.*) /test/$1 break;
proxy_pass https://a.com/;
}
}
参考两位的方法,已经 OK ,非常感谢!