我正在尝试在Apache中设置一个反向代理。 用户将被要求login,然后将被发送一个cookie。 我希望Apache检查cookie。 有没有办法做到这一点?
EG,现在我的configuration看起来像这样:
<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>
我可以在VirtualHost中添加一些东西来限制基于cookie的访问吗?
当然。 我做同样的事情。
当用户login时,我给他们一个cookie,并在/t/ tokenid中创build一个令牌,并将其放在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 ,我有它networking访问(但没有索引)和部分样式表引用/loggedin.txt被改写为:
RewriteCond %{HTTP:Cookie} S=([a-zA-Z0-9]+) RewriteRule ^/*loggedin\.txt$ /t/%1 [L]