Nginx web server¶
Install Nginx¶
sudo dnf -y install nginx
Create a self-signed certificate¶
For testing purposes, link to create Let's Encrypt certificate below.
sudo mkdir -p /etc/nginx/ssl
sudo openssl genrsa -out /etc/nginx/ssl/[ hostname ] 2048
sudo openssl req -new -x509 -key /etc/nginx/ssl/[ hostname ] -out /etc/nginx/ssl/[ hostname ] -days 365 -subj "/CN=[ hostname ]"
# /etc/nginx/conf.d/[ hostname ]
server {
listen 80;
server_name [ hostname ];
return 301 https://$host$request_uri;
}
# HTTPS server block
server {
listen 443 ssl;
server_name [ hostname ];
ssl_certificate /etc/nginx/ssl/[ hostname ];
ssl_certificate_key /etc/nginx/ssl/[ hostname ];
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
root /usr/share/nginx/html;
index [ hostname ] [ hostname ];
}
}
Configure port forwarding to web server¶
- See the port forwarding with OPNsense guide.
Configure domain registrar¶
Create a Let's Encrypt wildcard certificate¶
Update the Nginx configuration to use the Let's Encrypt certificate¶
# /etc/nginx/conf.d/[ hostname ]
server {
listen 80;
server_name [ hostname ];
return 301 https://$host$request_uri;
}
# HTTPS server block
server {
listen 443 ssl;
server_name [ hostname ];
ssl_certificate /etc/letsencrypt/live/[ hostname ]/[ hostname ];
ssl_certificate_key /etc/letsencrypt/live/[ hostname ]/[ hostname ];
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
root /usr/share/nginx/html;
index [ hostname ] [ hostname ];
}
}