毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。
0. はじめに
個人的な備忘録としてインストール方法と設定方法をメモっておきます。
WindowsでApacheでForward Proxyを立てて、tunnelingする設定です。
1. 前提条件
OS: Windows 11 Pro
IP: 固定IP
1. Windows用Apacheのダウンロード
以下のURLから「Apache 2.4 binaries VS17」と「vc_redist_x64」をダウンロードする
https://www.apachelounge.com/download/
今回はx64のバイナリーを使ったので、
- httpd-2.4.62-240904-win64-VS17.zip
- vc_redist_x64
をダウンロードした。
2. インストール
2-1. vc_redist_x64 を先にインストールする
インストール後に再起動が必要
2-2. httpd-2.4.62-240904-win64-VS17.zipを展開する
普通にZipファイルを展開するだけ
2-3. Apache24ディレクトリをC:\配下にコピーする
2-4. Windows の システム環境変数 PATH に次を追加する
C:\Apache24\bin
PowerToysの「環境変数」を使うのが楽です。
管理者として実行しないと編集できません
一番下の行の「直後に挿入」して、C:\Apache24\bin
を記入して「保存」です。
念のため再起動しておきます。
2-5. ApacheをWindowsでサービス起動する
Windowsのコマンドプロンプトを管理者権限で起動して、以下を実行する
httpd -k install
以下の画面が表示されるので「許可」をクリック
2-6. 一旦挙動確認
以下のファイルのServerName
を修正
"C:\Apache24\conf\httpd.conf"
以下のように修正する
- #ServerName www.example.com:80
+ ServerName localhost:80
再起動(は必要ないが)する。
httpd -k restart
http://localhost を開いて、"It works!"を確認する
3. Proxy設定
3-1. proxy.pacファイルを設置する
C:\Apache24\htdocs
配下に、proxy.pac
ファイルを保存する。
以下のshExpMatch
にはProxy接続先のURLを書いておきます。
function FindProxyForURL(url, host) {
var proxy = "PROXY <WindowsのIPアドレス>:8080";
if (
shExpMatch(url, "https://www.hogehoge.co.jp/*")
) {
return proxy;
}
return "DIRECT";
}
http://localhost/proxy.pac
で上記のファイルがそのまま表示されるか確認しておきます。
3-2. forward_proxy設定
"C:\Apache24\conf\httpd.conf" ファイルに以下の2行を追加します。
+ # Forward Proxy settings
+ Include conf/extra/forward_proxy.conf
場所は、521行目あたりです。
forward_proxy.conf
ファイルを以下に保存します。
Listen 8080
<VirtualHost *:8080>
ServerName <WindowsのIPアドレス>:8080
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_http2_module modules/mod_proxy_http2.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
LoadModule cache_socache_module modules/mod_cache_socache.so
DocumentRoot "${SRVROOT}/htdocs_proxy/"
CacheEnable socache /
<IfModule cache_module>
CacheQuickHandler off
CacheLock on
CacheLockPath "c:/apache_cache/mod_cache-lock"
CacheLockMaxAge 5
<IfModule cache_disk_module>
CacheRoot "c:/apache_cache"
CacheEnable disk "/"
CacheDirLevels 2
CacheDirLength 1
</IfModule>
</IfModule>
<IfModule proxy_module>
ProxyRequests On
ProxyVia On
ProxyAddHeaders Off
CustomLog "logs/proxy.log" combined
ErrorLog "logs/proxy_error.log"
LogLevel info
<Proxy *>
Require ip <接続元IPアドレス>/32
</Proxy>
</IfModule>
</VirtualHost>
3-3. "C:/Apache24/htdocs_proxy/" "c:/apache_cache"と ディレクトリを作成
以下のコマンドでディレクトリを作成します。空フォルダーで構いません。
mkdir "C:\Apache24\htdocs_proxy\"
mkdir "C:\apache_cache"
再起動時にワーニングが出るのを避ける為です。
4. ブラウザー側にProxy設定を行います。
5. まとめ
プロキシーキャッシュも効いて最高です。