Using error_page to a named location - possible?
Ed W
lists at wildgooses.com
Tue Mar 6 16:37:41 UTC 2012
Hi, as part of a larger problem I have a captive portal which grabs all
incoming URLs and after evaluating a bunch of logic redirects the caller
somewhere else. I use proxy_pass to pass the request to my cgi code.
However, I would like to customise the error message in the event that
the upstream daemon is unavailable. I can't figure out how to do that
affecting part of the incoming URLs. Is it possible to do something
like "error_page @502_error" in conjunction with proxy_pass?
So, I have
server {
listen 8000 default_server;
root /var/www/cp/htdocs/public;
location / {
proxy_read_timeout 5;
proxy_pass http://127.0.0.1:3000;
error_page 502 /502.html;
proxy_set_header Host $http_host;
proxy_set_header X-Server-Addr $server_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-HTTPS 0;
proxy_set_header X-Captive-Portal-Redirect 1;
}
location /502.html {
internal;
}
}
However, if I visit "http://somewhere/502.html" I get a 404 response
(presumably matching the location /502.html and the 404 is due to the
"internal"?)
I can't see that it's possible to use something like:
location / {
proxy_pass http://127.0.0.1:3000;
error_page 502 @502;
}
location @502 {
index /502.html;
root /var/www;
internal;
}
Does someone have a suggestion on how to customise the error response
without affecting ANY incoming URLs (they must ALL be passed through the
proxy under normal working situation)
(Its occured to me that I could perhaps setup another "server { }" block
listening on another port, then use a different proxy_pass in the
"location @502 {}"? Seems ugly, but would that work?)
Thanks for any thoughts
Ed W
More information about the nginx
mailing list