nginx反向代理配置去除前缀
使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发给下一个服务。设置proxy_pass请求只会替换域名,如果要根据不同的url后缀来访问不同的服务,则需要通过如下方法:
方法一:加"/"
server{
listen 8000;
server_name abc.com;
access_log "pipe:rollback/data/log/nginx/access.loginterval=1dbaknum=7maxsize=1G" main;
location^~/user/{
proxy_set_headerHost$host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_headerX-NginX-Proxytrue;
proxy_passhttp://user/;
}
location^~/order/{
proxy_set_headerHost$host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_headerX-NginX-Proxytrue;
proxy_passhttp://order/;
}
}
^~/user/表示匹配前缀是user的请求,proxy_pass的结尾有/,则会把/user/*后面的路径直接拼接到后面,即移除user。
方法二:rewrite
upstreamuser{
serverlocalhost:8089weight=5;
}
upstreamorder{
serverlocalhost:8090weight=5;
}
server{
listen80;
server_nameabc.com;
access_log"pipe:rollback/data/log/nginx/access.loginterval=1dbaknum=7maxsize=1G"main;
location^~/user/{
proxy_set_headerHost$host;
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
proxy_set_headerX-NginX-Proxytrue;
rewrite^/user/(.*)$/$1break;
proxy_passhttp://user;
}
location^~/order/{
proxy_set_headerHost$host;
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
proxy_set_headerX-NginX-Proxytrue;
rewrite^/order/(.*)$/$1break;
proxy_passhttp://order;
}
}
proxy_pass结尾没有/,rewrite重写了url。
---------------------
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。