2017-09-11 3 views
0

Gibt es eine Möglichkeit, den Antwortcode nginx sends zu ändern? Wenn der Server eine Datei empfängt, die seine client_max_body_size überschreitet, wie in der Konfiguration definiert, kann ich einen 403-Code anstelle eines 413-Codes zurückgeben lassen?nginx response code ändern von 413

+0

Warum würden Sie den Benutzer "Verboten" anstatt sagen wollen ihnen zu sagen, dass die "Payload" laut dem [HTTP Proposed Standard] (https://tools.ietf.org/html/rfc7231#section-6.5.) zu groß ist .11)? – gabeio

Antwort

2

arbeitet Below gut für mich

events { 
    worker_connections 1024; 
} 
http { 
server { 
    listen 80; 

    location @change_upload_error { 
     return 403 "File uploaded too large"; 
    } 

    location /post { 
     client_max_body_size 10K; 
     error_page 413 = @change_upload_error; 
     echo "you reached here"; 
    } 
} 

} 

Ergebnisse für eine 50KB-Datei veröffentlichen

$ curl -vX POST -F [email protected] vm/post 
Note: Unnecessary use of -X or --request, POST is already inferred. 
* Trying 192.168.33.100... 
* TCP_NODELAY set 
* Connected to vm (192.168.33.100) port 80 (#0) 
> POST /post HTTP/1.1 
> Host: vm 
> User-Agent: curl/7.54.0 
> Accept: */* 
> Content-Length: 51337 
> Expect: 100-continue 
> Content-Type: multipart/form-data; boundary=------------------------67df5f3ef06561a5 
> 
< HTTP/1.1 403 Forbidden 
< Server: openresty/1.11.2.2 
< Date: Mon, 11 Sep 2017 17:58:55 GMT 
< Content-Type: text/plain 
< Content-Length: 23 
< Connection: close 
< 
* Closing connection 0 
File uploaded too large% 

und nginx logs

web_1  | 2017/09/11 17:58:55 [error] 5#5: *1 client intended to send too large body: 51337 bytes, client: 192.168.33.1, server: , request: "POST /post HTTP/1.1", host: "vm" 
web_1  | 192.168.33.1 - - [11/Sep/2017:17:58:55 +0000] "POST /post HTTP/1.1" 403 23 "-" "curl/7.54.0"