nginx 的代理相信大家都使用过,例如负载均衡,高可用等等,对于这些应用,资料有很多,但是像是以下这种很特别的情况,却没啥资料:
GET http://www.example.com/http://file.example.com/download.bin
只能访问
www.example.com
,但是想要使用file.example.com
的文件,其中file.example.com
是动态的;这种情况下,简单的方式是,在服务器上配置子路径,进行一一对应,可如果file.example.com
有很多呢?
本文仅作为一个记录。
当前方法不适合直接暴露在公网,可能会导致意料之外的安全问题。如果确实想要在公网使用,请配置防火墙,或者访问白名单
配置IP
白名单的时候,请考虑docker
等容器导致内网IP
影响
配置的方式通过nginx
的正则方式,因为在一些浏览器里面 //
会变为单个/
进行请求,所以代码里面加上?
表达式,可选其中一个/
。
为了能够将GET
参数传递,去掉了表达式的结尾$
,同时在 proxy_pass
后加上$is_args$args
。
同样,为了兼容http
和https
,https
里面的s使用(s?)
进行提取,有需要的话,可以考虑加上ftp
但是目前已经没啥服务会使用ftp协议直接传输。
最后的配置内容为:
1 | geo $ip_list { |