I'm trying to add a custom error page for 503. what I did is. adding below lines to server conf in nginx.conf file.
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /home/username/sites/myProject/current/errorPages;
internal;
}
It displays the custom page when uwsgi is down, however this doesn't how any images. I was trying to do many config I can think of, but no luck. Does anybody know how I can display image file and enable css for a custom error page?
I put my custom error page into /home/username/sites/myProject/current/errorPages and file structure is..
errorPages/50x.html
errorPages/50x_files/50x.css
errorPages/50x_files/50x.js
errorPages/50x_files/image.png
I just had the same problem, and what did work is setting the nginx conf like this :
And then reference the image simply as src="image.png". The same should apply to your css and js!
Edit : I find a way to make it work for a bunch of file:
This way all the files in the errorPages folder will be available (e.g. src="/errorPages/image.png"), as nginx will try to match all "/errorPages/...". It is necessary to remove both the "=" after "location" (as it's not an exact match anymore) and the "internal;" in it (as the other resources will be called from the html and not internally by nginx).
I think the best approach is to do the following things:
inline CSS
Base64
After doing this, you can embed the generated Base64 string into the
background-image
CSS rule as follows:You can use the string with the
<img>
tags as well, just pass it to thesrc
attribute as follows:This way you can keep the
internal
nginx rule.The reason that your image/css is not shown/loaded, is because you're using the
internal
directive. Theinternal
directive specifies that a given location can only be used for internal requests, and is not available or accessible from the outside (i.e. http://mysite/errorPages/500.html). Thus, a 404 error on its turn is given for these files.A few workarounds are:
Remove the internal directive
css inline styles
for your error pages. This however won't work for your images, or other files that are linked to your page.