Apache ProxyPass の特定パスを除外する

2月 19, 2024apache

概要

  • リバースプロキシ(Apache) のProxyPass ディレクティブに関する Tipsを紹介します。私は、今回初めて使用しましたので、なるほど! を共有致します。

 

ProxyPass の特定パスを除外する

  • ProxyPass ディレクティブは、ProxyPassに指定したパスへのリクエストをバックエンドにプロキシします。
  • ここまでは経験ある方も多いかと思いますが、さらにサブディレクトリをリバースプロキシしたくないときに “!" を付けることで、プロキシの除外設定が可能になります。
ProxyPass /dir/subdir !
ProxyPass /dir http://backend.example.com
  • なお、ProxyPass の除外設定は、通常の ProxyPass エントリより上部に記載する必要があります。

 

疎通確認

  • 次は、疎通確認を行った結果を共有します。先ず、今回行った ProxyPass 設定のサンプルです。
  • この設定は、通常 “/" から始まるリクエストはすべてバックエンドにプロキシされますが、パスに “/test.htm" が指定されている場合のみ、バックエンドへのプロキシが行われません。なお、レスポンスのステータスは、ドキュメントルートに “test.htm" が存在するかによって変わります。
ProxyPass /test.htm !
ProxyPass / http://backend.example.com
  • 例えば、ドキュメントルートに “test.htm" が存在しない場合は、404 Not Found が返ります。
$ curl -vv http://localhost/test.htm
* Trying 127.0.0.1:80...
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET /test.htm HTTP/1.1
> Host: localhost
> User-Agent: curl/7.76.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 404 Not Found
< Date: Mon, 19 Feb 2024 02:45:04 GMT
< Server: Apache/2.4.58 () OpenSSL/1.0.2k-fips
< Content-Length: 196
< Content-Type: text/html; charset=iso-8859-1
<
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>
* Connection #0 to host localhost left intact

 

  • 次に、ドキュメントルートに “test.htm" が存在する場合は、200 OK が返ります。
$ curl -vv http://localhost/test.htm
* Trying 127.0.0.1:80...
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET /test.htm HTTP/1.1
> Host: localhost
> User-Agent: curl/7.76.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Mon, 19 Feb 2024 02:54:25 GMT
< Server: Apache/2.4.58 () OpenSSL/1.0.2k-fips
< Last-Modified: Mon, 19 Feb 2024 02:54:18 GMT
< ETag: "c-611b335bfc51f"
< Accept-Ranges: bytes
< Content-Length: 12
< Content-Type: text/html; charset=UTF-8
<
Hello world
* Connection #0 to host localhost left intact