0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

StylezAdvent Calendar 2024

Day 3

ApacheでFoward Proxyを設定する

Last updated at Posted at 2024-12-02

毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。

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 を先にインストールする

image.png

インストール後に再起動が必要

2-2. httpd-2.4.62-240904-win64-VS17.zipを展開する

普通にZipファイルを展開するだけ

image.png

2-3. Apache24ディレクトリをC:\配下にコピーする

image.png

2-4. Windows の システム環境変数 PATH に次を追加する

C:\Apache24\bin

PowerToysの「環境変数」を使うのが楽です。

管理者として実行しないと編集できません

image.png

一番下の行の「直後に挿入」して、C:\Apache24\binを記入して「保存」です。

念のため再起動しておきます。

2-5. ApacheをWindowsでサービス起動する

Windowsのコマンドプロンプトを管理者権限で起動して、以下を実行する

httpd -k install

image.png

以下の画面が表示されるので「許可」をクリック

image.png

2-6. 一旦挙動確認

以下のファイルのServerNameを修正
"C:\Apache24\conf\httpd.conf"

以下のように修正する

- #ServerName www.example.com:80
+ ServerName localhost:80

再起動(は必要ないが)する。

httpd -k restart

http://localhost を開いて、"It works!"を確認する

image.png

3. Proxy設定

3-1. proxy.pacファイルを設置する

C:\Apache24\htdocs 配下に、proxy.pacファイルを保存する。
以下のshExpMatchにはProxy接続先のURLを書いておきます。

"C:\Apache24\htdocs\proxy.pac"
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行目あたりです。

image.png

forward_proxy.confファイルを以下に保存します。

"C:\Apache24\conf\extra\forward_proxy.conf"
Listen 8080

<VirtualHost *:8080>
    ServerName WindowsIPアドレス>: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. まとめ

プロキシーキャッシュも効いて最高です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?