Configure Multiple Sites on Nginx Server with CDN
· Nginx & Infra · By Zeeshan Ahmad
How to Configure Multiple Sites on an Nginx Server
Problem
Configuring multiple websites on a single Nginx server requires proper configuration to ensure each domain is routed to the correct web root. This post explains how to set up two example sites using Nginx and also how to update DNS settings when using Cloudflare as a CDN.
Solution
1. Edit the nginx.conf File
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# Include configurations for available sites
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
This file includes references to sites-enabled, where individual site configurations will be included.
2. Create Virtual Host Configuration for Each Site
In /etc/nginx/sites-available, create a configuration file for each website.
site1.dev Configuration
server {
listen 80;
server_name site1.dev www.site1.dev;
root /var/www/site1;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
site2.dev Configuration
server {
listen 80;
server_name site2.dev www.site2.dev;
root /var/www/site2;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
3. Enable the Sites
Create symbolic links in sites-enabled to enable each site:
sudo ln -s /etc/nginx/sites-available/site1.dev /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.dev /etc/nginx/sites-enabled/
4. Test and Restart Nginx
Test your Nginx configuration and restart the service:
sudo nginx -t
sudo systemctl restart nginx
Updating DNS Settings in Cloudflare
If you are using a CDN like Cloudflare, you must update your DNS records to point to the server's IP. Here is an example of a DNS A record configuration in Cloudflare:
To ensure proper routing through Cloudflare:
- Set the record type to
A. - Input the correct domain (e.g.,
www). - Enter the server's IPv4 address where the website is hosted.
- Ensure the proxy status is enabled (orange cloud icon).
These changes ensure that traffic to your domain is correctly routed through Cloudflare’s CDN, optimizing performance and providing security features like SSL.
Conclusion
Nginx allows you to host multiple websites by separating their configurations in sites-available and linking them to sites-enabled. Additionally, updating DNS settings in Cloudflare ensures your site is properly routed through the CDN for better performance and security.