Opened 11 years ago
Closed 11 years ago
#716 closed defect (invalid)
400 Bad Request Client sent invalid request while reading client request line
| Reported by: | Chun Qhai | Owned by: | |
|---|---|---|---|
| Priority: | blocker | Milestone: | 1.7 |
| Component: | nginx-core | Version: | 1.7.x |
| Keywords: | nginx rtmp | Cc: | |
| uname -a: | |||
| nginx -V: | 1.7.7 | ||
Description
This is error.log from nginx. I setup nginx with rtmp server. And using record command to record and stored in my specific directory. And I want to access straight direct the video file in web browser. I got 400 Bad Request.
2015/02/06 17:14:40 [info] 2789#0: *1 client sent invalid request while reading client request line, client: XX.XXX.XX.XX, server: localhost, request: "GET /vod/YwlMkR5RQHLJL23ifhkKDXxSSrYE5CoFqfwj7y-2015-02-06%H59.flv HTTP/1.1" 2015/02/06 17:14:50 [info] 2789#0: *3 client closed connection while waiting for request, client: XX.XXX.X.XX, server: 0.0.0.0:80 2015/02/06 17:14:50 [info] 2789#0: *2 client closed connection while waiting for request, client: XX.XXX.X.XX, server: 0.0.0.0:80
My /usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
ignore_invalid_headers off;
#proxy_buffering off;
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
ignore_invalid_headers off;
#charset koi8-r;
#access_log logs/host.access.log main;
error_log /var/log/nginx/error.log debug;
error_log logs/error.log debug;
location / {
root html;
index index.html index.htm;
}
location /vod {
alias /var/rec;
}
rtmp {
server {
listen 1935;
chunk_size 4096;
notify_method get;
allow publish my_ip;
deny publish all;
allow play my_ip;
deny play all;
application live{
live on;
record all;
record_path /var/rec;
}
application live2 {
live on;
record all manual;
record_suffix -%Y-%m-%d%-%H%M.flv;
record_path /var/rec;
}
application vod {
#play /var/rec;
play http://54.169.145.234/vod/;
}
location /control {
# add_header Access-Control-Allow-Headers Origin,X-Requested-With,Content-Type,Accept;
# add_header Access-Control-Allow-Origin *;
rtmp_control all;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Note:
See TracTickets
for help on using tickets.

The request in question is invalid, as it contains invalid escape sequence "%H5" in the request line. Quoting RFC3986:
The "%" character have to be encoded to "%25" in this request.