Apacheでリバースプロキシを設定しようとしています。ユーザーはログインする必要があり、その後Cookieが送信されます。 ApacheにCookieをチェックしてもらいたい。これを行う方法はありますか?
EG、今のところ私の設定は次のようになっています:
<VirtualHost *:82>
# username:password sent on to endpoint
RequestHeader set Authorization "Basic cm9vdjfjDJaGRvYa=="
ProxyPass /monitors/2/ http://192.168.1.6/foo.cgi
ProxyPassReverse /monitors/2/ http://192.168.1.6/foo.cgi
</VirtualHost>
Cookieに基づいてアクセスを制限するためにVirtualHostに何かを追加できますか?
承知しました。私も同じことをします。
ユーザーがログインしたら、Cookieを渡して/t/
tokenidにトークンを作成し、Cookieに入れます:S=
tokenid;PATH=/
次に、RewriteCond
を使用してファイルの存在を確認できます。
RewriteEngine on
# check for no cookie being set
RewriteCond %{HTTP:Cookie} !S=([a-zA-Z0-9]+)
RewriteRule ^/*protected/ /login.html [L,R]
# check for an invalid cookie being set
RewriteCond %{HTTP:Cookie} S=([a-zA-Z0-9]+)
RewriteCond /t/%1 !-f
RewriteRule ^/*protected/ /login.html [L,R]
最後に、ガベージコレクターが定期的に実行され、古いトークンが削除されます。
find /t -type f \! -atime +1 -delete
Atimeを自動的に更新するために、noatime
なしで/t
をマウントし、Webアクセス可能(ただしインデックス付けされていない)にし、スタイルシートの一部が/loggedin.txt
として書き換えられます。 :
RewriteCond %{HTTP:Cookie} S=([a-zA-Z0-9]+)
RewriteRule ^/*loggedin\.txt$ /t/%1 [L]