AW: Nginx multiple upstream with different protocols

c0nw0nk nginx-forum at forum.nginx.org
Thu Feb 23 12:38:06 UTC 2017


For a server {} that you want to make both universally compatible with both
http port 80 and https port 443 ssl requests.

This was my solution for my own sites.

#inside http block
upstream proxy_web_rack { #port 80 unsecured requests
server 172.16.0.1:80;
}
upstream proxy_web_rack_ssl { #port 443 secured requests
server 172.16.0.1:443;
}
#end http block


#Server block 
server {
listen 80;
listen 443 ssl;

location / {

proxy_set_header X-Real-IP  $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
if ($scheme = "http") {
proxy_pass $scheme://proxy_web_rack; #if scheme was http send to port 80
}
if ($scheme = "https") {
proxy_pass $scheme://proxy_web_rack_ssl; #if scheme was https send to port
443
}

} #end location

}
#end server block


That way if the recieved request from client is a https secured one
proxy_pass will make sure that it goes over port 443 and remains secured.

Posted at Nginx Forum: https://forum.nginx.org/read.php?2,272561,272589#msg-272589



More information about the nginx mailing list