1

Currently, I have nginx > 25 x nginx + fcgi

The main nginx, does the load balancing and each virtualhost listens to a different ip (different products).

some of the ips receive different hostnames, and they get rewritten back to the backend servers like:

... http://some-random-url.com/path

GET /path HTTP/1.1

Host: app1

X-Original-Host: some-random-url.com

X-Forwarded-For: 12.34.56.78

....

We're currently replacing the main proxy with haproxy (better load balancing algorithms) but I can't figure out how to append the original host. (I can't find any documentation on variables like nginx's $host).

I can rewrite the url like:

reqirep ^Host: Host:\ app1

but "app1" still requires the original hostname to do business logic.

I thought about running each app on a different port but the problem is that I want nginx's httpchk to work for all the backend servers, and doing one backend per app means 10 apps x 10 checks = 10 checks per second to each backend (unless the log data lied).

Anyone have an Idea?

Angelo Vargas
  • 153
  • 1
  • 6

1 Answers1

2

Just leave the Host header alone - HAProxy doesn't molest it normally, so if you leave it alone it will be passed to your application servers.

Shane Madden
  • 114,520
  • 13
  • 181
  • 251