How to Setup Multiple Virtual Hosts in Different Ports in NGINX


setup multiple virtual hosts in different ports in nginx

When you run multiple websites, it might be a good idea to host them on the same server to save server costs and resources. Here’s how to setup multiple virtual hosts in different ports in NGINX.

 

How to Setup Multiple Virtual Hosts in Different Ports in NGINX

Here are the steps to setup multiple virtual hosts in different ports in NGINX. Before you proceed make sure you have enabled virtual hosts in NGINX. Here are the steps to do it.

 

Let’s say you want to host 2 websites www.example.com and api.example.com on port 8000 and 8001 respectively.

 

1. Create Virtual host files

Create 2 separate virtual host files – one for each website


$ sudo vim /etc/nginx/sites-available/www.example.com
$ sudo vim /etc/nginx/sites-available/api.example.com

 

2. Add Virtual Host Configuration

Add the following lines of code in the 2 files

#www.example.com


server {
 listen 8000
 server_name www.example.com
 root /var/www/www.example.com/html/example/app; #also add a root dir here
 location / {
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_pass http://127.0.0.1:3836;
 }
}

 

 

#api.example.com


server {
 listen 8001
 server_name api.example.com
 root /var/www/api.example.com/html/example/app; #also add a root dir here
 location / {
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_pass http://127.0.0.1:3836;
 }
}

 

The key is to differentiate the 2 configs with different port numbers and server_name directive. Also, use the appropriate root folder location for each website.

 

 

3. Enable the domains

Next, enable the 2 domains


$ sudo ln -s /etc/nginx/sites-available/www.example.com /etc/nginx/sites-enabled/www.example.com
$ sudo ln -s /etc/nginx/sites-available/api.example.com /etc/nginx/sites-enabled/api.example.com

 

 

4. Reload NGINX web server

Reload NGINX server to apply changes.

$ sudo service nginx reload

 

That’s it! NGINX will serve both your websites from different ports on same server.

About Sreeram Sreenivasan

Sreeram Sreenivasan is the Founder of Ubiq, a business dashboard & reporting platform for small & medium businesses. Ubiq makes it easy to build business dashboards & reports for your business. Try it for free today!