使用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。

顺便问一下,你要用它做什么?

如果不通过代理就无法上网!

但是,我想查看外部访问时的访问日志!

不论何时何地,请随时如有需要。

广告
将在 10 秒后关闭
bannerAds