Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Проблема б локирован? ?я и распоз нования ме тода CONNECT, оши? ?ка ?client sent invalid request "CONNECT {address}:25"?
- To: nginx-ru@xxxxxxxxx
- Subject: Проблема б локирован? ?я и распоз нования ме тода CONNECT, оши? ?ка ?client sent invalid request "CONNECT {address}:25"?
- From: "Mrau Hu" <nginx-forum@xxxxxxxx>
- Date: Mon, 19 Oct 2009 18:52:28 -0400
Здравствуйте.
Не так давно на сервер (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?
2) Почему при проверке переменной $request_method CONNECT совпал с GET?
3) Возможно ли такое, что значение переменной $request_method было GET, а не
CONNECT?
4) Каким образом вы бы отсеяли нездоровый метод?
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,15092,15092#msg-15092
|