Apache 2.4 代理通行证

Phanix
·
·
IPFS
·

ProxyPass 可以把URL A 转去URL B,并保留网址是URL A。

常见的用法可能像是

  1. 原本有网址site-a.com,可是之后做了新版的网站,但是旧有的论坛功能(www.site-a.com/forum/) 要留着
  2. 原本有site-a.com 跟site-b.com,但是其实某一路径(/path1)下的东西是一模一样,但是想要让site-a.com与site-b.com的使用者看起来都在原本网站,且不想在两个server 上重复deploy

以第一个情况来说,懒惰的方式就是把旧的网站整个搬去跑在别的port (例如site-a.com:8008/ ),然后把www.site-a.com/forum/ 做proxy pass 到www.site-a.com:8008/forum/ 。
第二个情况,可能是把/path1/ 放在site-a.com 上,但实际上site-b.com/path1/ 也是proxy pass 去site-a.com/path1/

example config file 如下:

 $ more /etc/apache2/sites-enabled/site-a.conf
<VirtualHost *:80>
	ServerName www.site-a.com
	ServerAlias site-a.com
		
	ProxyPass /path1/ http://www.site-b.com/path1/
	ProxyPassReverse /path1/ http://www.site-b.com/path1/
</VirtualHost>

用proxy pass 和redirect 是不太一样的。如果是用redirect,那之后的request 都是对redirect 之后的server,但是proxy 的话,两边的会有request (如下)

 $ tail -f /var/log/apache2/access.log
35.xxx.xxx.xxx - - [25/Jul/2017:14:57:43 +0800] "GET /path1/ HTTP/1.1" 200 1251 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0"
130.xxx.xxx.xxx - - [25/Jul/2017:14:57:43 +0800] "GET /path1/ HTTP/1.1" 200 1251 "-

Original link: Phanix's Blog

CC BY-NC-ND 2.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!