Earlier quoted context omitted.
Sure, but the point is you should design your POSTs to be idempotent as well.
Well, they are defined as non-idempotent, so there's no reason why you 'should' design this way. You can't make every request idempotent. It's best to design so that duplicate POSTs are handled sensibly (e.g. you don't make a user pay for the same product twice), but the response to the second POST is unlikely to be the same as the first one, so they aren't idempotent. More difficult cases are where an action could l…
Nginx reverse proxies retries PUT/POST/DELETE on response timeout by default
61–70 of 96 posts
Re: Nginx reverse proxies retries PUT/POST/DELETE on response timeout by default
#62We're also going to prioritize a complete fix in the product, and encourage your comments and input on this ticket: https://trac.nginx.org/nginx/ticket/488
Disclaimer: I work @ NGINX. Thanks, Owen
Re: Nginx reverse proxies retries PUT/POST/DELETE on response timeout by default
#63Earlier quoted context omitted.
"but that will also disable connection timeout retry which is not what you want!" Why is this not what you want? Are you using the reverse proxy as a load balancer to multiple servers? Otherwise, if it's 1:1 proxy (for something like SSL termination) wouldn't having nginx fail/timeout when the server does be acceptable?
Using NGINX as a reverse proxy is an extremely common scenario. In fact that's what I currently run (with a support subscription), but will be evaluating moving to HAProxy if their tech dept does not provide a way to resolve this issue (which is actually a very big deal for me, and I was not aware)
Re: Nginx reverse proxies retries PUT/POST/DELETE on response timeout by default
#64Earlier quoted context omitted.
This is why the If-Match and If-None-Match preconditions exist; they resolve PUT races by checking that the resource is in the expected state.
I think you mean If-Match and If-Unmodified-Since. Actually they are relevant for DELETE as well. E.g. you might not want to DELETE if another client has just PUT.
Re: Nginx reverse proxies retries PUT/POST/DELETE on response timeout by default
#65This essentially became the laser of death the other day and lead to cascading failure which eventually brought down our system. That's why I'm posting this. Very few people know about this and it's really scary. I'm happy people are voting this up to increase some awareness of this. Potential workarounds: You might think disabling `proxy_next_upstream timeout` will do, but that will also disable connection timeout r…
Does this help: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#pro... http://nginx.org/en/docs/http/ngx_http_proxy_module.html#pro...
Re: Nginx reverse proxies retries PUT/POST/DELETE on response timeout by default
#66This essentially became the laser of death the other day and lead to cascading failure which eventually brought down our system. That's why I'm posting this. Very few people know about this and it's really scary. I'm happy people are voting this up to increase some awareness of this. Potential workarounds: You might think disabling `proxy_next_upstream timeout` will do, but that will also disable connection timeout r…
What about `proxy_next_upstream off;`?
Re: Nginx reverse proxies retries PUT/POST/DELETE on response timeout by default
#67Re: Nginx reverse proxies retries PUT/POST/DELETE on response timeout by default
#68Am I the only Chrome on Android user whom received a PKCS#12 access request for trac.nginx.org? I have honestly never seen that before.
Re: Nginx reverse proxies retries PUT/POST/DELETE on response timeout by default
#69One of the upstreams is running iptables -A OUTPUT -p tcp --sport 8080 --tcp-flags PSH PSH -j DROP
CURLing the nginx location configured for proxy_pass'ing returns 504 GATEWAY_TIMEOUT on half of the requests, as expected.
Re: Nginx reverse proxies retries PUT/POST/DELETE on response timeout by default
#70This essentially became the laser of death the other day and lead to cascading failure which eventually brought down our system. That's why I'm posting this. Very few people know about this and it's really scary. I'm happy people are voting this up to increase some awareness of this. Potential workarounds: You might think disabling `proxy_next_upstream timeout` will do, but that will also disable connection timeout r…
We've hit 3 problems with nginx: 1. Exactly this, we had mystery double trades from our clients and it took us a long time to realise it was nginx assuming we timed out and routing traffic to the next server 2. It doesn't do health checks. When a server goes down it will send 1 out of every 8 real requests to the down server to see if it responds. Having disabled resubmitting of requests to avoid the double trade iss…