2011-12-10 123 views
3

我们有一个在weblogic应用服务器上运行的Web应用程序(JQuery和Spring)。应用服务器前面有一个apache http服务器。 所有传入的请求将通过Web服务器到达应用程序服务器。验证基于Apache HTTP服务器中的请求标头的传入请求

现在我们有一个要求,我们必须验证传入http请求头中的值,如果存在,请求必须发送到应用服务器。如果没有,我们会阻止请求,并向最终用户显示一个静态错误页面。

我想知道我们是否可以在apache http服务器中实现这个逻辑。请指教。

+0

请阅读我们的常见问题,http://webmasters.stackexchange.com/faq了解更多关于哪些问题适合我们的网站。这是一个很好的问题,它只属于Stack Overflow。 –

回答

1

你可以用mod_rewrite来做到这一点。你没有包括你确切的设置,但是如果你有一个mod_proxy类型的配置,你只是想确保重写不会干扰正常流量的通过。在一般意义上,在你的Apache配置,您可以:

  • 打开改写
  • 检查条件
  • 应用基于条件的重写规则

为了让一个真正的一个简单的例子,如果你在查询字符串中寻找一个键,并且禁止访问(403),如果它不存在,你会这样做:

RewriteEngine On 
RewriteBase/
RewriteCond %{QUERY_STRING} !somekey 
RewriteRule ^.*$ - [F,L] 

这可以像你真正想要的那样复杂,你可以将条件连在一起(隐式AND或显式或witht他[OR]标志),你可以提供实际的页面而不是禁止的消息。

与往常一样,在修补前备份你的配置文件,使用.htaccess测试它可能是一个好主意(尽管出于性能考虑,最好将它移动到生产负载的实际配置中)。

重写文件是一个很好的资源太:

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

这真的是相当不错的文档。对于一些指针 - 你需要查看标志([L] = last; [P] =视为代理请求; [F] =禁止等),你需要一个熟悉正则表达式语法的人