我们有一个在 weblogic 应用服务器上运行的 web 应用程序(JQuery 和 Spring)。应用服务器前面有一个 apache http 服务器。所有传入的请求都将通过 Web 服务器到达应用服务器。
现在我们有一个要求,我们必须验证传入的 http 请求标头中的值,如果存在,则必须将请求发送到应用服务器。如果不是,我们会阻止请求,然后向最终用户显示静态错误页面。
我想知道我们是否可以在 apache http 服务器中实现这个逻辑。请指教。
我们有一个在 weblogic 应用服务器上运行的 web 应用程序(JQuery 和 Spring)。应用服务器前面有一个 apache http 服务器。所有传入的请求都将通过 Web 服务器到达应用服务器。
现在我们有一个要求,我们必须验证传入的 http 请求标头中的值,如果存在,则必须将请求发送到应用服务器。如果不是,我们会阻止请求,然后向最终用户显示静态错误页面。
我想知道我们是否可以在 apache http 服务器中实现这个逻辑。请指教。
你可以用 mod_rewrite 做到这一点。您没有包括您的确切设置,但如果您有一个 mod_proxy 类型的配置,您只想确保重写不会干扰正常流量的通过。一般来说,在您的 Apache 配置中,您会:
举一个非常简单的例子,如果你在查询字符串中寻找一个键,如果它不存在则禁止访问 (403),你会做这样的事情:
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !somekey
RewriteRule ^.*$ - [F,L]
这可以像您希望的那样复杂,您可以将条件链接在一起(隐式 AND 或显式或带有 [OR] 标志),并且您可以提供实际页面而不是禁止消息。
与往常一样,在修改之前备份您的配置,使用 .htaccess 进行测试可能是一个好主意(尽管出于性能原因,最好将其移动到实际配置以用于生产负载)。
重写文档也是一个很好的资源:
http://httpd.apache.org/docs/current/mod/mod_rewrite.html
它确实是非常好的文档。对于某些指针-您将需要查找标志([L] = 最后;[P] = 视为代理请求;[F] = 禁止等),并且您需要通常熟悉正则表达式语法的人