Starting to redirect HTTP to HTTPS without breaking POST requests


in a single server block listening on both 80 and 443 ssl, currently in
production, I want to start redirecting all HTTP GET requests to HTTPS

but keep serving non-GET requests on HTTP for a little while, so as not
bork form posts and such made by clients from pages loaded on HTTP
the change.

This can probably be accomplished by either:

(a) using the kludgy multi-condition if-hack (checking both $scheme =
and $request_method = GET) as in nginx hack for multiple conditions · GitHub

(b) duplicating the server block, one for HTTP and one HTTPS, and adding
if ($request_method = GET) block in the HTTP one?

… but is there some neater way?

Thanks, best regards,


Posted at Nginx Forum: