Hi Sergey, Liam!

Thank you for your answers, they are really helpful!
I did not think of such kinds of solutions, they should both work fine for
my use case.

Have a great day

Sébastien

Le mer. 23 avr. 2025 à 15:44, Liam Crilly via nginx <nginx@nginx.org> a
écrit :

> Alternative approach would be to use error_page to catch the 5xx response
> (502 I think)
> when there are no available upstream servers and then, from a named
> location, proxy_pass
> with HTTPS to the same upstream group.
>
> Modifying the original sample config below.
> There is a blog post for similar use case here[1] but it is quite old ;)
>
> Cheers,
> Liam.
>
> [1] https://blog.nginx.org/blog/capturing-5xx-errors-debug-server
>
> ---
>
> upstream main_upstream {
>   server <ip here>:80
>   server <ip here>:80
>   <etc>
> }
>
> upstream secondary_upstream {
>   server <ip here>:443
>   server <ip here>:443
>   <etc>
> }
>
> location / {
>   proxy_pass http://main_upstream;
>   error_page 502 @try_secondary;
>   <etc>
> }
>
> location @try_secondary {
>   proxy_pass https://secondary_upstream;
>   <etc>
> }
>
> ________________________________________
> From: nginx <nginx-boun...@nginx.org> on behalf of Sergey A. Osokin <
> o...@freebsd.org.ru>
> Sent: 23 April 2025 14:26
> To: Sébastien Rebecchi <srebec...@kameleoon.com>
> Cc: nginx mailing list <nginx@nginx.org>
> Subject: Re: use a secondary upstream as backup
>
> CAUTION: This email has been sent from an external source. Do not click
> links, open attachments, or provide sensitive business information unless
> you can verify the sender’s legitimacy.
>
>
> Hi Sébastien,
> hope you're doing well.
>
> Thanks for the question.
>
> On Wed, Apr 23, 2025 at 12:07:21PM +0200, Sébastien Rebecchi via nginx
> wrote:
> > backup, meaning NGINX will only use them if all primary servers fail.
> >
> > In my case, I have some servers running over HTTP and would like to
> > configure HTTPS servers as backups. However, since an upstream can only
> use
> > one protocol, this setup isn't currently possible.
>
> [...]
>
> The solution you may help and you may want to try to implement is "double"
> proxy, where:
> - at first, nginx is proxy to the loopback upstream, i.e. to itself
> - on the second step nginx proxies from loopback to an original upstream
>
> So, the original upstream block will look like this:
>
> upstream insecure {
>     server A.B.C.D:80;    # http server
>     server 127.0.0.1:8999;
>
>     <other directives here>
> }
>
> upstream secure {
>     server E.F.G.H:443;    # https
>
>     <other directives here>
> }
>
> <other servers here>
>
> server {
>     listen 127.0.0.1:8999;
>
>     location / {
>         proxy_pass https://secure;
>
>         <other directives here>
>     }
> }
>
> > Is there a feature like this planned, or one that could be considered for
> > future development?
>
> I don't think such feature is planned at the moment, just because all
> servers defined in the same upstream should be configured equally.
>
> Hope that helps.
> Thank you.
>
> --
> Sergey A. Osokin
> _______________________________________________
> nginx mailing list
> nginx@nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx
> _______________________________________________
> nginx mailing list
> nginx@nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx
>
_______________________________________________
nginx mailing list
nginx@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx

Reply via email to