intercoder
intercoder

Reputation: 2409

How to load an HTML template when NGINX is down and or reloading?

I'm trying to find a way to load an html that shows "Server Down" or something similar when I'm building my application.

Right now I every time I build my backend and frontend there are couple of seconds when I see the below template if I go to the site:

enter image description here

I will like to customize that page or show a different template saying : Server Down at the moment or Building

My nginx.conf is the following. Where should I put the location for a 403.html template to load ?: This needs to be outside of the build folder I think, since the 403 page appears while it's building.

 server {  # [ASK]: is this what's causing the problem ? 
root /home/smiling/smiling-frontend/website/build; ## development build
index index.html;

server_name frontend.develop.smiling.be;  ## development domain


charset  utf-8;
gzip on;
gzip_vary on;
gzip_disable "msie6";
gzip_comp_level 6;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_proxied any;
gzip_types
  text/plain
  text/css
  text/js
  text/xml
  text/javascript
  application/javascript
  application/x-javascript
  application/json
  application/xml
  application/xml+rss;

location / {
  try_files $uri $uri/ /index.html;
}

location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc|svg|woff|woff2|ttf)\$ {
  expires 1M;
  access_log off;
  add_header Cache-Control "public";
}

location ~* \.(?:css|js)\$ {
  expires 7d;
  access_log off;
  add_header Cache-Control "public";
}
  
location ~ /\.well-known {
  allow all;
}

location ~ /\.ht {
  deny  all;
}

add_header Access-Control-Allow-Origin '*/';
add_header Access-Control-Allow-Headers 'origin, x-requested-with, content-type, accept, authorization';
add_header Access-Control-Allow-Methods 'GET, POST';



listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/backend.develop.smiling.be/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/backend.develop.smiling.be/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

Upvotes: 0

Views: 408

Answers (1)

boppy
boppy

Reputation: 1908

Your last sentence is kind of inconsistent... You like not to do something, but want to do the same thing nevertheless.


You could define your own page or string to be served on errors:

error_page 403 /403.html;

location = /403.html {
    internal;
    return 403 "Server Down at the moment"; # <- this could also contain an HTML string if your nginx defaults to text/html as content type.
}

You could also put a 403.html file in your root folder and skip the location part in order to serve a full HTML file here.

Upvotes: 1

Related Questions