概要
- さくらのレンタルサーバの .htaccess に RewriteRule ディレクティブを記述してリバースプロキシする
- 今回の環境: さくらのレンタルサーバ スタンダードプラン
- 2019年12月18日時点の動作確認結果
- https のサーバにリバースプロキシすると Internal Server Error になってしまう問題がある
http://example.sakura.ne.jp/ から http://www.example.com/ にリバースプロキシする例
~/www/.htaccess に書く例。
.htaccess
# http://example.sakura.ne.jp/ にアクセスする際に
# http://www.example.com/index.html にリクエストを投げてしまうため
# disabled で無効にする
DirectoryIndex disabled
# URL書き換え機能を有効にする
RewriteEngine On
# リバースプロキシ先のURLに書き換える正規表現
RewriteRule (.*) http://www.example.com/$1 [P,L,QSA]
# バックエンドのサーバが Host ヘッダを必要とする場合は設定する
RequestHeader set Host www.example.com
http://example.sakura.ne.jp/foo/bar/ から http://www.example.com/foo/bar/ にリバースプロキシする例
~/www/.htaccess に書く場合
.htaccess
# URL書き換え機能を有効にする
RewriteEngine On
# リバースプロキシ先のURLに書き換える正規表現
RewriteRule ^foo/bar/(.*) http://www.example.com/foo/bar/$1 [P,L,QSA]
# バックエンドのサーバが Host ヘッダを必要とする場合は設定する
RequestHeader set Host www.example.com
~/www/foo/.htaccess に書く場合
.htaccess
# URL書き換え機能を有効にする
RewriteEngine On
# リバースプロキシ先のURLに書き換える正規表現
RewriteRule ^bar/(.*) http://www.example.com/foo/bar/$1 [P,L,QSA]
# バックエンドのサーバが Host ヘッダを必要とする場合は設定する
RequestHeader set Host www.example.com
https のサーバにリバースプロキシすると Internal Server Error になってしまう問題
いくつかのパターンで試してエラーログを見たところ、どうやら https にはリバースプロキシできないようだ。
AH01961: SSL Proxy requested for example.sakura.ne.jp:80 but not enabled [Hint: SSLProxyEngine]
AH00961: HTTPS: failed to enable ssl support for xxx.xxx.xxx.xxx:443 (www.example.com)
SSLProxyEngine not allowed here
ProxyRequests not allowed here
SSLProxyEngine ディレクティブは .htaccess では使えないものなので SSLProxyEngine を On にすることもできない。
mod_ssl - Apache HTTP Server Version 2.4
Context: server config, virtual host, proxy section