前提条件
先查看是否开启mod_proxy.so和mod_proxy_http.so模块,没有的话,开起来。
如果没有编译,得自己编译下,此处略过。
配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| NameVirtualHost *:83 Listen 83 <VirtualHost *:83> ServerName baksvn #ServerAdmin xxx@xxx.com ProxyPass / http://10.0.103.161/ ProxyPassReverse / http://10.0.103.161/ ErrorLog logs/proxy.error.log CustomLog logs/proxy.access.log combined
<Location /web> DAV svn SVNPath /data/svn/web AuthType Basic AuthName 'Repository Of web-160' AuthzSVNAccessFile /data/svn/web/conf/authz AuthUserFile /data/svn/conf/passwd Require valid-user Order allow,deny Allow from 10.0.4.0/22 10.0.14.10 10.0.12.201 10.0.30.16 10.0.3.182 10.0.34.182 </Location> </VirtualHost>
|
注意事项
如果需要转发的请求有做权限验证,得把这个权限验证前移到转发服务器上进行。
比如:
业务服务器:A
转发服务器:B
那么A上面的apache权限验证得移动到B上面
案例展示
将多个URI转发到其他域名/端口
应该将同一个端口的ProxyPass,写到同一个VirtualHost标签里面;不要分散成多个。
错误的写法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| NameVirtualHost *:80
<VirtualHost *:80> DocumentRoot /var/www/html ProxyPass /gitlab http://some.domain.com/gitlab </VirtualHost>
<VirtualHost *:80> DocumentRoot /var/www/html ProxyPass /hux http://some.domain.com/hux </VirtualHost>
<VirtualHost *:80> DocumentRoot /var/www/html ProxyPass /pages http://172.20.200.191:8003/pages </VirtualHost>
|
正确的写法:
1 2 3 4 5 6 7 8
| NameVirtualHost *:80
<VirtualHost *:80> DocumentRoot /var/www/html ProxyPass /gitlab http://some.domain.com/gitlab ProxyPass /hux http://some.domain.com/hux ProxyPass /pages http://172.20.200.191:8003/pages </VirtualHost>
|