nginx转caddy之proxy_pass转换
warning:
这篇文章距离上次修改已过440天,其中的内容可能已经有所变动。
nginx中转发某个后端应用,配置如下:
location /web/sys/Login/ {
proxy_pass http://ip:9999/back/sys/tLogin/;
}
从配置可以看到,所有匹配了/web/sys/Login/
的路径都会被转发到http://ip:9999/back/sys/tLogin/
,即使==/web/sys/Login/==后面有xxx也会被转发,也会带上。比如/web/sys/Login/dingtalk/callback?code=xxx
,转发到后端时,路径会变成 http://ip:9999/back/sys/tLogin/callback?code=xxx
。
但是在caddy中,如果只是简单的将proxy_pass
改为reverse_proxy
,那么很不幸你将会在caddy日志里看到如下报错:
Error during parsing: for now, URLs for proxy upstreams only support scheme, host, and port components
大概意思是reverse_proxy暂不支持主机或端口后带路径的写法,查了一圈官方文档,再试了rewrite和uri两个指令,再不断抓包测试,终于实现完美转换,最终配置如下:
handle /web/sys/Login/* {
rewrite * /back/sys/tLogin/{uri}
reverse_proxy http://ip:9999
}
其中{uri}会把/web/sys/Login/*
后的内容带上!
评论已关闭