This is in response to closed thread:
I just had to deal with this issue and found nginx was a great solution.
Solution:
proxy_intercept_errors on;
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors
" Determines whether proxied responses with codes greater than or equal to 300 should be passed to a client or be intercepted and redirected to nginx for processing with the error_page directive."
Now nginx handles my errors instead of node-red.
How I use it in nginx
###nginx default file
server {
listen 80;
listen [::]:80;
location = /robots.txt {
add_header Content-Type text/plain;
return 200 "User-agent: *\nDisallow: /\n";
}
location /static {
alias /home/nfs/.nfs/httpStatic;
autoindex on;
}
root /home/nfs/.nginx/errorpages;
#400 Bad Request
error_page 400 /400.html;
location /400.html {}
#403 Forbidden
error_page 403 /403.html;
location /403.html {}
#404 Not Found
error_page 404 /404.html;
location /404.html {}
#405 Method Not Allowed
error_page 405 /405.html;
location /405.html {}
#406 Not Acceptable
error_page 406 /406.html;
location /406.html {}
#408 Request Timeout
error_page 408 /408.html;
location /408.html {}
#409 Conflict
error_page 409 /409.html;
location /409.html {}
#413 Payload Too Large
error_page 413 /413.html;
location /413.html {}
#414 URI Too Long
error_page 414 /414.html;
location /414.html {}
#415 Unsupported Media Type
error_page 415 /415.html;
location /415.html {}
#417 Expectation Failed
error_page 417 /417.html;
location /417.html {}
#423 Locked
error_page 423 /423.html;
location /423.html {}
#429 Too Many Requests
error_page 429 /429.html;
location /429.html {}
#431 Request Header Fields Too Large
error_page 431 /431.html;
location /431.html {}
#444 No Response
error_page 444 /444.html;
location /444.html {}
#451 Unavailable For Legal Reasons
error_page 451 /451.html;
location /451.html {}
#494 Request header too large
error_page 494 /494.html;
location /494.html {}
#495 SSL Certificate Error
error_page 495 /495.html;
location /495.html {}
#496 SSL Certificate Required
error_page 496 /496.html;
location /496.html {}
#497 HTTP Request Sent to HTTPS Port
error_page 497 /497.html;
location /497.html {}
#500 Internal Server Error
error_page 500 /500.html;
location /500.html {}
#502 Bad Gateway
error_page 502 /502.html;
location /502.html {}
#503 Service Unavailable
error_page 503 /503.html;
location /503.html {}
#504 Gateway Timeout
error_page 504 /504.html;
location /504.html {}
#505 HTTP Version Not Supported
error_page 505 /505.html;
location /505.html {}
#507 Insufficient Storage
error_page 507 /507.html;
location /507.html {}
#set trusted ip's that can foward header info
set_real_ip_from 127.0.0.1;
set_real_ip_from ::1;
real_ip_header X-Real-IP;
real_ip_recursive on;
#nr-main-controler-http-endpoint used for all unknown and new logins
location / {
proxy_pass http://localhost:10000;
#Defines the HTTP protocol version for proxying
#by default it it set to 1.0.
#For Websockets and keepalive connections you need to use the version 1.1
proxy_http_version 1.1;
#Sets conditions under which the response will not be taken from a cache.
proxy_cache_bypass $http_upgrade;
#These header fields are required if your application is using Websockets
proxy_set_header Upgrade $http_upgrade;
#These header fields are required if your application is using Websockets
proxy_set_header Connection "upgrade";
#The $host variable in the following order of precedence contains:
#hostname from the request line, or hostname from the Host request header field
#or the server name matching a request.
proxy_set_header Host $host;
#Forwards the real visitor remote IP address to the proxied server
proxy_set_header X-Real-IP $remote_addr;
#A list containing the IP addresses of every server the client has been proxied through
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#When used inside an HTTPS server block, each HTTP response from the proxied server is rewritten to HTTPS.
proxy_set_header X-Forwarded-Proto $scheme;
#Defines the original host requested by the client.
proxy_set_header X-Forwarded-Host $host;
#Defines the original port requested by the client.
proxy_set_header X-Forwarded-Port $server_port;
#proxy_set_header Authorization "";
#proxy_set_header X-Forwarded-User $remote_user;
#if all of the proxied servers are down, this will return a 50x error (bad gateway) else tell nginx to intercept this error
proxy_intercept_errors on;
}
#cameras
}
Now when I goto an invalid url I can have it handle the redirect to the homepage, that is the dashboard