Set Up Domain and SSL for EzyPlatform
Updated at 1774946036000When 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
80and443open 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
adminandwebareas - 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:
-
Checkto validate the Nginx status -
Reloadto 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
Installif 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
80or443is blocked -
proxy_passpoints 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.