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。
---------------------
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。