Я пытаюсь подключиться к серверу Nginx, который работает на моем локальном хосте через порт 80, с помощью netcat. Но я все время получаю одну и ту же страницу с ошибкой, независимо от того, какой заголовок (GET, POST, HEAD) я отправляю. Может кто-нибудь объяснить мне, почему?
pradeep@pradeep-laptop:~$ echo -n "GET / HTTP/1.0\r\n\r\n" | nc localhost 80
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/1.1.19</center>
</body>
</html>
Я выполняю ту же команду, указанную выше, но все равно получаю html-страницу.
pradeep@pradeep-laptop:~$ echo -n "HEAD / HTTP/1.0\r\n\r\n" | nc localhost 80
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/1.1.19</center>
</body>
</html>
Я проверил, работает ли мой сервер nginx или нет, с помощью команды netstat. Результат выглядит следующим образом:
root@pradeep-laptop:/# netstat -taupen| grep LISTEN | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 0 264102 13723/nginx
echo
(в bash и /bin/echo
) по умолчанию не раскрывают escape-последовательности. Это означает, что ваши символы CR и LF буквально отправляются как \r
и \n
. Вам необходимо предоставить -e
опция, чтобы разрешить побеги.
$ echo -en "GET / HTTP/1.0\r\n\r\n" | nc localhost 80
HTTP/1.1 403 Forbidden