Set Up Domain and SSL for EzyPlatform

Updated at 1774946036000
When deploying EzyPlatform to a real environment, there are usually three main tasks:
  • point your domain to the server running the system
  • configure Nginx to reverse proxy requests to the application
  • issue an SSL certificate so the website runs over HTTPS
In EzyPlatform, you can do this in two ways:
  • configure it through the EzySupport admin interface
  • configure it manually by logging into the server
These two approaches can be used separately or together. The admin interface is convenient for quick setup, while the manual approach is better when your team wants direct control over the server infrastructure.

Prerequisites

Before configuring domains and SSL, make sure you have:
  • a Linux server with a public IP
  • a registered domain name
  • DNS records already pointing to the correct server IP
  • ports 80 and 443 open in your firewall or security group
  • EzyPlatform already running properly on its internal application ports
One important note: the SSL flow in EzySupport uses Certbot in --nginx mode, so Nginx must already be installed and configured correctly before issuing certificates.

How EzyPlatform Handles Domains

Based on the current implementation, the system supports two domain groups:
  • primary domains for the admin and web areas
  • additional domains or subdomains managed in Domain Settings
Besides routing requests by host, EzyPlatform also allows you to assign domain-specific branding, such as:
  • siteName
  • siteTitle
  • siteIconUrl
  • siteLogoUrl
  • pageDescription
  • pageImageUrl
  • pageTitleSeparator
This makes it possible for one system to serve multiple domains with different branding.

Part 1: Configuration Through the EzySupport Interface

You will need to install EzySupport for EzyPlatform first.

Step 1: Point DNS to the Server

At your DNS provider, create records pointing to your server IP.
Example:
admin.example.com   A      203.0.113.10
www.example.com     A      203.0.113.10
help.example.com    A      203.0.113.10
It is best to wait until DNS propagation is complete before issuing SSL certificates.

Step 2: Install Nginx in EzySupport

In the EzySupport admin area, go to:
  • Load Balancing > Nginx
This screen allows you to:
  • check whether Nginx is installed
  • install Nginx automatically on Linux
  • validate the configuration with nginx -t
  • reload Nginx
  • configure the Nginx directory path, which defaults to /etc/nginx
If Nginx is not installed yet, click Install.

Step 3: Create Nginx Configuration for Primary Domains

In the Load Balancing > Nginx screen, EzySupport shows:
  • Admin configuration
  • Web configuration
The system derives the admin and web domains from the currently configured URLs. If the configuration file does not exist yet, you can click Change to generate a default template.
The default template reverse proxies to the internal application port. For example:
server {
    server_name www.example.com;
    client_max_body_size 50M;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8080;
    }
}
After editing the configuration, click Save.
One useful detail is that the system automatically runs an Nginx syntax check before saving. If the configuration is invalid, it rolls back to the previous version.

Step 4: Check and Reload Nginx

After saving the configuration, use:
  • Check to validate the Nginx status
  • Reload to apply the new configuration
You should do this after every configuration change.

Step 5: Add Additional Domains or Subdomains

In the Sub domain configuration section, click Add to create a new domain entry.
You can define:
  • domainName
  • domainType
  • serviceName
  • siteName
  • siteTitle
  • siteIconUrl
  • siteLogoUrl
  • pageDescription
  • pageImageUrl
  • ipv4
  • ipv6
  • priority
  • status
These values help EzyPlatform recognize the domain and apply the correct branding for that host.
If a subdomain does not yet have an Nginx configuration file, the system can generate a default subdomain template for you to edit and save.

Step 6: Install Certbot

Go to:
  • Load Balancing > Certbot
There you can:
  • click Install if Certbot is not installed yet
  • enter the Contact Email
  • click Save
This email will be used when registering SSL certificates.

Step 7: Issue SSL for Each Domain

Go back to Load Balancing > Nginx, then click Set SSL for each domain.
The system will run Certbot integrated with Nginx in order to:
  • issue the SSL certificate
  • update the Nginx configuration
  • enable HTTP to HTTPS redirection
After that, you should verify the result in a browser.

Part 2: Manual Configuration Directly on the Server

In many cases, you may prefer configuring everything over SSH instead of using the plugin. This approach is useful when:
  • the production environment does not allow DevOps actions through a web UI
  • your team wants full control over Nginx configuration files
  • you already have a standard server operations workflow

Step 1: SSH Into the Server

ssh root@your-server-ip
Or use a user with sudo privileges:
ssh deploy@your-server-ip

Step 2: Install Nginx

On Ubuntu or Debian:
sudo apt update
sudo apt install -y nginx
On CentOS, AlmaLinux, Rocky Linux, or RHEL:
sudo yum install -y nginx
or:
sudo dnf install -y nginx
Enable and start the service:
sudo systemctl enable nginx
sudo systemctl start nginx
Check the installation:
nginx -v
sudo systemctl status nginx

Step 3: Create Reverse Proxy Configuration

Assume:
  • the web app runs on port 8080
  • the admin app runs on port 8081
  • the web domain is www.example.com
  • the admin domain is admin.example.com
Create the web configuration file:
sudo nano /etc/nginx/sites-enabled/www.example.com
Example content:
server {
    listen 80;
    server_name www.example.com;
    client_max_body_size 50M;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8080;
    }

    location ~* .(css|js|woff|woff2|ttf|gif|jpg|jpeg|png|svg|webp|ico)$ {
        expires 1h;
        add_header Cache-Control "public, max-age=3600";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8080;
    }
}
Create the admin configuration file:
sudo nano /etc/nginx/sites-enabled/admin.example.com
Example:
server {
    listen 80;
    server_name admin.example.com;
    client_max_body_size 50M;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8081;
    }
}
If your distribution uses sites-available, you can create the files there and symlink them into sites-enabled.

Step 4: Check and Reload Nginx

sudo nginx -t
sudo systemctl reload nginx
Only reload after nginx -t reports a valid configuration.

Step 5: Install Certbot

On Ubuntu or Debian:
sudo apt install -y certbot python3-certbot-nginx
On CentOS or RHEL:
sudo yum install -y certbot python3-certbot-nginx
or:
sudo dnf install -y certbot python3-certbot-nginx
Verify the installation:
certbot --version

Step 6: Issue SSL Certificates

Example for the web domain:
sudo certbot --nginx -d www.example.com -m admin@example.com --agree-tos --no-eff-email --redirect --non-interactive
Example for the admin domain:
sudo certbot --nginx -d admin.example.com -m admin@example.com --agree-tos --no-eff-email --redirect --non-interactive
After this step, Certbot will automatically update the Nginx configuration to enable HTTPS and redirect HTTP traffic to HTTPS.

Step 7: Verify the Result

Test in a browser:
  • http://www.example.com
  • https://www.example.com
  • http://admin.example.com
  • https://admin.example.com
Or verify quickly with command line tools:
curl -I http://www.example.com
curl -I https://www.example.com

Combining Server Configuration with EzySupport

If you configure Nginx and SSL entirely through SSH, it is still a good idea to add the domain in EzySupport so the system can apply the correct branding and metadata by host.
In short:
  • DNS, Nginx, and SSL belong to the infrastructure layer
  • Domain Settings in EzySupport belong to the application layer
These two layers complement each other rather than replace each other.

Common Issues

Some common problems when setting up domains and SSL are:
  • DNS is not pointing to the correct server IP
  • port 80 or 443 is blocked
  • proxy_pass points to the wrong application port
  • the Nginx configuration has syntax errors
  • Certbot is run before the domain is reachable from the internet
  • the server is not Linux, so the plugin’s automatic installation flow cannot be used

Operational Notes

A few things are worth keeping in mind when working with EzySupport:
  • After changing Nginx configuration, you should validate and reload it immediately.
  • SSL should only be issued after the domain is already accessible over HTTP.
  • Deleting a domain in the admin interface may also remove the corresponding Nginx configuration file.
  • If you edit Nginx directly on the server, be careful not to overwrite those changes later through the plugin.

Table Of Contents