<html><head></head><body>Hi Maxim,<br><br>thanks for the quick confirmation!<br><br>> The Host header is set to what you wrote in the "proxy_pass" by  default.  That is, it will be "backend" with the above configuration.<br><br>Wouldn't it make more sense to use the hostname from the particular upstream server?<br>I see two scenarios where this is required:<br><br>1. TLS secured upstream servers. TLS verification requires the correct Host header to be set (i.e. "a.example.com" instead of "backend"). Though I know there is the possibility of doing this (additionally) with TLS client certificates.<br><br>2. Upstream vhosts. Consider the scenario where multiple domains point to the same IP address, where the requests are split apart based on the Host header (I.e. virtual hosts)<br><br>What do you think?<br><br>Regards<br>Jack<br><br><br><div class="gmail_quote">On 22 November 2018 22:13:38 CET, Maxim Dounin <mdounin@mdounin.ru> wrote:<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail">Hello!<br><br>On Thu, Nov 22, 2018 at 09:11:59PM +0100, Jack Henschel wrote:<br><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;">Hello everyone,<br><br>during my last debugging session with Nginx I was wondering how and when<br>exactly Nginx passes upstream's hostname when proxying a request.<br><br>In particular, I have the following example:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;">upstream backend {<br>  server a.example.com:443;<br>  server b.example.com:443;<br>}<br></blockquote><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;">server {<br>  proxy_pass <a href="https://backend/path;">https://backend/path;</a><br>  proxy_set_header Host $proxy_host; # default according to docs<br>}<br></blockquote><br>I observed that Nginx does not always pass the appropriate Host header<br>to the upstream server (i.e. "a.example.com" for "server<br>a.example.com:443" and "b.example.com" for "server b.example.com:443").<br><br>Is this observation correct or am I missing something?<br></blockquote><br>The Host header is set to what you wrote in the "proxy_pass" by <br>default.  That is, it will be "backend" with the above <br>configuration.<br></pre></blockquote></div></body></html>