Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Проблема бл окирования и распознова ния метода CONNECT, ошибка ?c lient sent invalid request "CONNECT {address}:25"?
On Mon, Oct 19, 2009 at 06:52:28PM -0400, Mrau Hu wrote:
> Здравствуйте.
>
>
> Не так давно на сервер (Linux Debian) был установлен Nginx (версии 0.8.20),
> на время конфигурации он был настроен слушать порт 8080.
>
> Через некоторое время в логах был замечен HTTP-метод CONNECT, на удаленный
> адрес и 25 порт.
>
> После чего в конфиг была добавлена проверка на правильные методы запросов:
>
> ## Only allow GET, HEAD and POST request methods
> if ($request_method !~ ^(GET|HEAD|POST)$ ) {
> return 444;
> }
>
>
>
> Но проверка не сработала, и в логи были произведены записи:
>
> access.log
>
> 94.100.178.70 - - "CONNECT 194.67.23.20:25 HTTP/1.0" 500 186 "-" "-" "-"
>
>
> error.log
>
> 29637#0: *5 client sent invalid request while reading client request line,
> client: 94.100.178.70, request: "CONNECT 194.67.23.20:25 HTTP/1.0"
>
> 29637#0: *5 "^(GET|HEAD|POST)$" matches "GET", client: 94.100.178.70,
> request: "CONNECT 194.67.23.20:25 HTTP/1.0"
> (строка повторяется еще 9 раз)
>
> 29637#0: *5 rewrite or internal redirection cycle while internal redirect to
> "/error/40x.html", client: 94.100.178.70, request: "CONNECT 194.67.23.20:25
> HTTP/1.0"
>
>
>
> Выдержка из конфига:
>
>
> server {
> listen: 8080;
>
> ## Logs
> access_log /var/log/nginx/access.log main;
> error_log /var/log/nginx/error.log debug;
>
> ## Errors
> # client errors
> error_page 400 401 402 403 404 405 406 407 408 409 410 411 412 413
> 414 415 416 417 /error/40x.html;
> # server errors
> error_page 500 501 502 503 504 505 506 507 /error/50x.html;
>
> location /error {
> internal;
> }
>
> ## Only allow GET, HEAD and POST request methods
> if ($request_method !~ ^(GET|HEAD|POST)$ ) {
> return 444;
> }
>
> ## Index names
> index index.php index.html index.htm;
>
> ## Main site
> location / {
> try_files $uri $uri/ =404;
> }
> }
>
>
>
> Вопросы:
>
> 1) Есть ли возможность отсеять HTTP-метод CONNECT на уровне Nginx?
Он не поддерживается:
29637#0: *5 client sent invalid request while reading client request line,
client: 94.100.178.70, request: "CONNECT 194.67.23.20:25 HTTP/1.0"
> 2) Почему при проверке переменной $request_method CONNECT совпал с GET?
Потому что запрос был перенаправлен в "GET /error/40x.html".
> 3) Возможно ли такое, что значение переменной $request_method было GET, а не
> CONNECT?
>
> 4) Каким образом вы бы отсеяли нездоровый метод?
--
Игорь Сысоев
http://sysoev.ru
|