Introduction
“What is done wholeheartedly however small, is noble”
If you would wish to share the same FQDN such as api.geeksforgeeks.org to serve more than one site or to serve APIs, then this will help you. If you have two sites hosted on different servers in your environment for example sales and accounting, your clients will need to do the following on the browser to access the different sites.
To Access Sales site: https://api.geeksforgeeks.org/sales To Access Accounts site: https://api.geeksforgeeks.org/accounts
As you can see, we are using the same FQDN to serve different sites which are differentiated by /sales and /accounting. This will save you more public IPs and Firewall Rules if you have one in your environment.
We hope you have Nginx already installed and running.
### Install Nginx on Ubuntu / Debian ###
sudo apt -y install nginx
sudo systemctl enable --now nginx
### Install Nginx on CentOS / Fedora ###
sudo yum -y install nginx
sudo systemctl enable --now nginx
### Install Arch Linux / Manjaro ###
sudo pacman -S nginx
sudo systemctl enable --now nginx
Step 1: Modify Main Nginx Configuration file
Open up Nginx default configuration file and add the following line inside the http part. Make sure it is within the http curly brackets.
http {
....
......
include /etc/nginx/sites.d/*.conf;
}
This adds the configuration files in /etc/nginx/sites.d/ for nginx to read and act on them
Step 2: Create main Site configuration file
Let us now add our main site FQDN configuration file in /etc/nginx/sites.d
$ sudo vim api.neveropen.conf
server {
listen 80;
server_name api.geeksforgeeks.org;
return 301 https://api.geeksforgeeks.org$request_uri;
}
server {
listen 443 ssl http2;
server_name api.geeksforgeeks.org;
modsecurity_transaction_id "api.neveropen.tech-$request_id";
access_log /var/log/nginx/test-api-access.log;
error_log /var/log/nginx/test-api-error.log;
include /etc/nginx/default.d/api.geeksforgeeks.org/*.conf;
}
The specific sites will be located in /etc/nginx/default.d/api.geeksforgeeks.org/ and as you can notice, that has been included in our configuration file.
Step 3: Create site routing configurations
Now create the sites under /etc/nginx/default.d/api.geeksforgeeks.org/ directory as included in the configuration above. In this setup, we’ll create one for sales
cd /etc/nginx/default.d/api.geeksforgeeks.org
This configuration will redirect traffic to server 1 (192.168.55.60) hosting sales site listening on port 8443
$ sudo vim sales.conf
location /sales/ {
proxy_http_version 1.1;
proxy_pass https://192.168.55.60:8443/sales/;
proxy_cache_bypass $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Upgrade $http_upgrade;
}
This configuration will redirect traffic to server 1 (192.168.55.63) hosting sales site listening on port 8080
$ sudo vim accounts.conf
location /accounts/ {
proxy_http_version 1.1;
proxy_pass https://192.168.55.63:8080/accounts/;
proxy_cache_bypass $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Upgrade $http_upgrade;
}
That is all you need to configure your nginx to proxy your sites or APIs using the same FQDN. Thank you for reading through and before you decide to shift your eyes, take a look at related guides below:
- Install Varnish Cache 6 for Apache/Nginx on CentOS 7
- How to hide X-Powered-By / X-CF-Powered-By PHP headers in Nginx
- How To Enable GZIP & Brotli Compression for Nginx on Linux
- Configure JFrog Artifactory behind Nginx reverse proxy and Let’s Encrypt SSL
- Configure Jenkins behind Nginx reverse proxy and Let’s Encrypt SSL
- How to solve nginx: [warn] could not build optimal proxy_headers_hash error