- Ubuntu 10.04.2
- nginx 0.7.65
Я вижу странные HTTP-запросы, поступающие на мой сервер nginx.
Чтобы лучше понять, что происходит, я хочу получить целые данные HTTP-запроса для таких запросов. (Т.е. сбросьте все заголовки запроса и тело, где я смогу их прочитать.)
Могу ли я сделать это с помощью nginx? В качестве альтернативы, есть ли какой-нибудь HTTP-сервер, который позволяет мне делать это «из коробки», на который я могу проксировать эти запросы с помощью nginx?
Обновление: обратите внимание, что в этом блоке есть куча нормального трафика, и я хотел бы избежать захвата всего этого на низком уровне (скажем, с tcpdump
) и фильтрации его позже.
Я думаю, что было бы намного проще сначала отфильтровать хороший трафик в правиле перезаписи (к счастью, в этом случае я могу написать его довольно легко), а затем иметь дело только с поддельным трафиком.
И я не хочу перенаправлять фиктивный трафик в другую коробку, чтобы иметь возможность захватить его там tcpdump
.
Обновление 2: чтобы дать немного больше подробностей, фиктивный запрос имеет параметр (скажем) foo
в своем запросе GET (значение параметра может отличаться). Хорошие запросы гарантированно никогда не будут иметь этот параметр.
Если я могу фильтровать по этому tcpdump
или ngrep
как-то - нет проблем, я буду использовать их.
Ответы:
Отрегулируйте количество строк до / после (аргументы -B и -A):
Это позволяет вам получать требуемые HTTP-запросы на коробке без генерации огромного файла PCAP, который вы должны перенести в другое место.
Имейте в виду, что фильтр BPF никогда не бывает точным, если через какой-либо блок проходит большое количество пакетов, BPF может и будет отбрасывать пакеты.
источник
Я не знаю точно, что вы имеете в виду под дампом запроса, но вы можете использовать tcpdump и / или wireshark для анализа данных:
И вы можете использовать wireshark, чтобы открыть файл и увидеть диалог между серверами.
источник
Если вы проксируете запросы к Apache с установленным mod_php, вы можете использовать следующий PHP-скрипт для вывода запросов:
Обратите внимание, что поскольку вы используете nginx, это
$_SERVER['REMOTE_ADDR']
может быть бессмысленно. Вам нужно будет передать реальный IP через Apacheproxy_set_header X-Real-IP $remote_addr;
, и вы можете использовать его вместо этого (или просто полагаться на то, что он регистрируется черезgetallheaders()
).источник