使用Apache设置多级转发代理
太长,不想读。
-
- Apacheでフォワードプロキシを構築できる
-
- さらに、ProxyRemoteディレクティブを併用することでフォワードプロキシを多段にすることができる
ProxyRemoteで指定するプロキシは、認証などは利用できない
环境
Ubuntu Linux 18.04 LTS。 – Ubuntu Linux 18.04 长期支持版。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic
阿帕奇。
$ /usr/sbin/apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built: 2019-09-16T12:58:48
另外,我们将Apache作为前置代理使用,并假设其在172.17.0.2上运行。
设置前向代理
在Ubuntu Linux操作系统上,使用a2enmod命令可以启用Apache模块。
$ sudo a2enmod proxy_http proxy_connect
所需的用于设置转发代理的模块在这里。
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule proxy_connect_module /usr/lib/apache2/modules/mod_proxy_connect.so
Apache模块mod_proxy
基本例子:
基础范例
将代理服务器的监听端口设置为8080,并设置转发代理。
Listen 8080
<VirtualHost *:8080>
ProxyRequests On
ProxyVia On
<Proxy *>
Require ip 172.17.0 ## アクセス許可するIPアドレス帯など
</Proxy>
/VirtualHost>
如果要将其分为多个阶段,还需结合使用ProxyRemote指令。
ProxyRemote指示
Listen 8080
<VirtualHost *:8080>
ProxyRequests On
ProxyVia On
<Proxy *>
Require ip 172.17.0 ## アクセス許可するIPアドレス帯など
</Proxy>
ProxyRemote * http://[your-proxy-host]:[your-proxy-port]
</VirtualHost>
通过这样配置,这个Apache将会作为正向代理使用,而且Apache也将作为ProxyRemote指定的代理进行操作。
确认。
$ https_proxy=http://172.17.0.2:8080 curl -I https://www.google.com/
$ http_proxy=http://172.17.0.2:8080 curl -I wttr.in/tokyo?lang=ja
另外,由于在ProxyRemote中无法指定代理服务器的用户名和密码(无法包含在URL中),所以如果存在带有身份验证的代理服务器,则最好使用Squid。
顺便问一下,你要用它做什么?
如果不通过代理就无法上网!
但是,我想查看外部访问时的访问日志!
不论何时何地,请随时如有需要。