Hi Francis, I added return statement to my config as you suggested. Now config for backend s2 looks like:
server { listen 8080; server_name s2; location / { root /usr/share/nginx/html/foo/bar; return 200 "Do something sensible with $http_x_file\n"; autoindex on; } } Unfortunately still it doesn't work as I expect - upload.txt file content is not saved on server side in /tmp/nginx-client-body. My understanding is that transfer should be performed in 2 phases (2 POST requests via 2x curl). First request should deliver file name, and second should deliver actual file content without ingeration from backend side. I analyzed HTTP flow in wireshark and it looks fine for me (details below). 1. curl --data-binary upload.txt http://localhost/upload - s1 listening on 80 recive POST request with body = "upload.txt". S1 buffer "upload.txt" in /tmp/0000001, generate new POST request with field X-FILE="/tmp/0000001" and pass this request to backend (s2) - s2 listening on 8080 recieve POST request with X-FILE = "/tmp/0000001" - s2 generate HTTP response 200 with body = "Do something sensible with /tmp/0000001\n" and pass it to s1 - s1 recieve above response and pass it to client - client recieve HTTP response 200 with body = "Do something sensible with /tmp/0000001\n" 2. curl --data-binary '@upload.txt' http://localhost/upload If I understand this mechanism correctly now actual upload.txt transfer to server without backend ingeration should be triggered. So I should get reponse 200 and upload.txt content should be saved by server under /tmp/nginx-client-body. Anyway when I type curl --data-binary '@upload.txt' http://localhost/upload whole scenario from previous point is performed again. Posted at Nginx Forum: https://forum.nginx.org/read.php?2,270063,270122#msg-270122 _______________________________________________ nginx mailing list nginx@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx