我需要确保我的网址(称为 www.domain.com)始终受到至少通过基本 HTTP 身份验证的保护。此外,我想使用 mod_rewrite 将我的用户发送到我的服务器上运行的两个 OC4j 实例之一。我还想使用相同的身份验证来保护我的 OC4j 管理面板(和其他管理类型的功能)。我将有 2 个用户,称他们为管理员(管理员将有权访问 OC4j 实例和 OC4j 管理面板)和访客(访客将只能访问 OC4j 实例)。
因此,假设我有两个 OC4j 实例——instance_a 和 instance_b。instance_a 将在端口 8888 上运行,instance_b 将在端口 8889 上运行。当用户键入 www.domain.com/instance_a 时,我想首先确保他们已通过服务器身份验证,然后我想使用 mod_rewrite 将请求代理到 www .domain.com:8888/instance_a。这将适用于 instance_b。同样,任何用户、管理员或访客都可以访问这些实例。如果用户尝试直接访问 OC4j 管理面板,如果他们不是管理员用户,我想将他们踢出。
我有一个看起来像这样的 VirtualHost 条目:
<VirtualHost *:80>
ServerName www.domain.com
CustomLog "/var/log/httpd/ic/access_log" "combined"
ErrorLog "/var/log/httpd/ic/error_log"
RewriteEngine on
RewriteLogLevel 9
RewriteLog "/var/log/httpd/rewrite_log"
RewriteCond %{REMOTE_USER} !^guest$ [OR]
RewriteCond %{REMOTE_USER} !^admin$
RewriteCond %{REQUEST_URI} ^/instance_a.*$
RewriteRule ^.*$ - [F,L]
<LocationMatch "^/.*$">
AuthType Basic
AuthName "Please Login"
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwd/passwords
Require valid-user
</LocationMatch>
</VirtualHost>
出于某种原因,这不起作用(我并不感到惊讶)。似乎当我同时使用 Authentication 和 mod_rewrite 东西时,它们不能一起工作。
提前致谢。