本文主要來聊一下nginx的access log當中出現的499問題。html
A non-standard status code introduced by nginx for the case when a client closes the connection while nginx is processing the request.前端
服務器返回http頭以前,客戶端就提早關閉了http鏈接,常見於後臺接口處理時間比較長,而前端請求又自帶有超時時間。jquery
<!DOCTYPE html> <html> <head> <script src="http://www.w3school.com.cn/jquery/jquery-1.11.1.min.js"></script> <script> $(document).ready(function(){ $("button").click(function(){ $.ajax({ url : '/demo/test', timeout : 10000, type : 'get', dataType : 'json', success : function(data){ alert('success'); } }); }); }); </script> </head> <body> <button>ajax帶超時時間請求</button> </body> </html>
@GetMapping("/test") public String test(HttpServletResponse response) throws InterruptedException { Thread.sleep(100*1000); return "hello"; }
location /demo/ { access_log /usr/local/var/log/nginx/host.access.log main; proxy_pass http://localhost:8080/demo/ ; }
關於log format以下nginx
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
127.0.0.1 - - [04/Nov/2017:01:11:29 +0800] "GET /demo/test HTTP/1.1" 499 0 "http://localhost:8888/demo.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" "-" 127.0.0.1 - - [04/Nov/2017:01:11:42 +0800] "GET /demo/test HTTP/1.1" 499 0 "http://localhost:8888/demo.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" "-" 127.0.0.1 - - [04/Nov/2017:01:11:58 +0800] "GET /demo/test HTTP/1.1" 499 0 "http://localhost:8888/demo.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" "-"