Проверить входящий запрос на основе заголовка запроса на http-сервере apache

У нас есть веб-приложение (JQuery и Spring), работающее на сервере приложений weblogic. Перед сервером приложений находится http-сервер apache. Все входящие запросы будут проходить через веб-сервер и достигать сервера приложений.

Теперь у нас есть требование, что мы должны проверить значение в заголовке входящего HTTP-запроса, и если он присутствует, запрос должен быть отправлен на сервер приложений. Если нет, мы должны заблокировать запрос и, в свою очередь, отобразить статическую страницу ошибки для конечного пользователя.

Я хочу знать, можем ли мы реализовать эту логику на http-сервере apache. Пожалуйста посоветуй.


person Sivaraman Viswanathan    schedule 10.12.2011    source источник
comment
Пожалуйста, ознакомьтесь с нашими часто задаваемыми вопросами, webmasters.stackexchange.com/faq, чтобы узнать больше о том, какие вопросы подходят для нашего сайта. Это отличный вопрос, он просто принадлежит Stack Overflow.   -  person Ben Hoffman    schedule 10.12.2011


Ответы (1)


Вы можете сделать это с помощью mod_rewrite. Вы не указали свои точные настройки, но если у вас есть конфигурация типа mod_proxy, вы просто хотите убедиться, что перезаписи не мешают прохождению обычного трафика. В общем смысле в вашей конфигурации Apache вы должны:

  • Включить перезапись
  • Проверить условие
  • Применение правила перезаписи на основе условий

Чтобы привести очень простой пример, если вы ищете ключ в строке запроса и запрещаете доступ (403), если он отсутствует, вы должны сделать что-то вроде этого:

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

Это может быть настолько сложным, насколько вы действительно хотите, вы можете связать условия вместе (неявное И, или явное, или с флагом [ИЛИ]), и вы можете обслуживать реальную страницу, а не запрещенное сообщение.

Как всегда, создайте резервную копию вашей конфигурации, прежде чем приступать к работе, и может быть хорошей идеей проверить это с помощью .htaccess (хотя из соображений производительности лучше перенести его в фактическую конфигурацию для производственных нагрузок).

Документация по переписыванию также является отличным ресурсом:

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

Это действительно неплохая документация. Для некоторых указателей вам нужно будет найти флаги ([L] = последний; [P] = рассматривать как прокси-запрос; [F] = запрещенный и т. д.), и вам понадобится кто-то, кто знаком с синтаксисом регулярных выражений.

person Adam Comerford    schedule 15.01.2012