Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

nginx reverse proxy multiple backends

Tags:

nginx

Here is my situation: I will have one frontend server running nginx, and multiple backends servers running apache + passenger with different rails applications. I am NOT trying to do any load balancing. What I need to do is setup nginx to proxy connections to specific servers based on the url. IE, client.domain.com should point to x.x.x.100:80, client2.domain.com should point to x.x.x.101:80, etc.

I am not that familiar with nginx, but I could not find a specific configuration online that fit my situation.

Thanks.

like image 520
Capt.Redbeard Avatar asked Nov 05 '12 21:11

Capt.Redbeard


1 Answers

You can match the different URLs with server {} blocks, then inside each server block, you'd have the reverse proxy settings.

Below, an illustration;

server {    server_name client.domain.com;    # app1 reverse proxy follow   proxy_set_header X-Real-IP $remote_addr;   proxy_set_header Host $host;   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   proxy_pass http://x.x.x.100:80;  }  server {    server_name client2.domain.com;    # app2 reverse proxy settings follow   proxy_set_header X-Real-IP $remote_addr;   proxy_set_header Host $host;   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   proxy_pass http://x.x.x.101:80; } 

Also, you may add further Nginx settings (such as error_page and access_log) as desired in each server {} block.

like image 137
cobaco Avatar answered Sep 20 '22 22:09

cobaco