The company that I work for, uses Nginx for Reverse Proxy and Load Balancer, so I just add an another block to nginx.conf file as shown below for the new service, when requesting Nginx server with curl http://10.11.12.15:8080/api
Nginx returns 400 Bad Request, however after changing this configuration proxy_set_header Host $http_host:$proxy_port;
to proxy_set_header Host $host:$server_port;
solved Bad Request problem. But I don't get the point.
I have already read this answers What's the difference of $host and $http_host in Nginx and Practical difference of $http_host and $host.
But there isn't a clear answer for this situation. What is the difference between this headers ?
proxy_set_header Host $http_host:$proxy_port;
proxy_set_header Host $host:$server_port;
Used this block;
upstream web-service {
server 10.11.12.13:8080;
server 10.11.12.14:8080 backup;
}
server {
listen 8080;
server_name myHost 10.11.12.15;
location / {
proxy_pass http://web-service;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host:$proxy_port; # Throw HTTP 400 Bad Request
# proxy_set_header Host $host:$server_port; # Working solution
}
}