ある事情でプロキシ(リバースプロキシじゃなくて普通のやつ)が必要になったので久しぶりに Apache を触ったら簡単に設定できたので書きます。試した環境は Ubuntu 18 です。
インストールとモジュールの有効化
まず、以下のようにして apache2.4 をインストールして必要なモジュールを有効化します。このように a2enmod
というコマンドでモジュールが有効化するようになっています。このような設定方法は /etc/apache2/apache2.conf
に書いてあります。
sudo apt install apache2
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_connect
apenmod
コマンドは、実際には /etc/apache2/mods-available/
にある設定ファイルから /etc/apache2/mods-enabled/
へのシンボリックファイルを貼る事によってモジュールを有効化します。例えば sudo a2enmod proxy
のように mod_proxy を有効化すると proxy.load と proxy.conf の2つのシンボリックリンクができます。どちらも設定ファイルです。
$ ls -l | grep 'proxy\.'
lrwxrwxrwx 1 root root 28 Jan 31 17:35 proxy.conf -> ../mods-available/proxy.conf
lrwxrwxrwx 1 root root 28 Jan 31 17:35 proxy.load -> ../mods-available/proxy.load
ここでは3つのモジュールを有効化します。次のような役割があります。
- mod_proxy: Proxy 機能の大本。
- mod_proxy_http: HTTP Proxy
- mod_proxy_connect: HTTPS Proxy (CONNECT メソッドという機能を使って HTTPS をトンネリングする)
設定
設定ファイルに変更が必要なのは二箇所です。
/etc/apache2/ports.conf
に以下を追加
Listen 443
/etc/apache2/mods-available/proxy.conf
の ProxyRequests と を有効化して Require all denied
を無効化する。
ProxyRequests On
<Proxy *>
AddDefaultCharset off
#Require all denied
#Require local
</Proxy>
Apache 再起動
sudo systemctl restart apache2
クライアント側の設定
Mac の場合以下のようにします。
- Preferences > Network > Wi-Fi > Advanced... > Proxies
- Web Proxy(HTTP)
- Web Proxy Server: (プロキシの IP) :80
- Secure Web Proxy (HTTPS)
- Secure Web Proxy Server: (プロキシの IP):443
- Web Proxy(HTTP)
あと、多分わざわざ Proxy 経由でアクセスしたくなるサイトには DNS にアクセスできないと思うので /etc/hosts
に必要なエントリを足します。
127.0.0.1 localhost
192.168.111.222 secret.example.com