nginx 的error_page对付同一个http状态码,莫斯科服务器新加坡vps,只能执行一次,第二次就不会再执行了(初认识有错误)。
譬喻:403状态
序列号 | CPU | RAM | HDD | 带宽 | 售价(美元) | 免费试用 |
---|---|---|---|---|---|---|
香港服务器1 | E5-2620 | 32G | 1T HDD | 50M/无限流量 | $196.00 | 立即申请 |
香港服务器2 | E5-2650 | 32G | 1T HDD | 50M/无限流量 | $256.00 | 立即申请 |
香港服务器3 | E5-2680 | 32G | 1T HDD | 50M/无限流量 | $316.00 | 立即申请 |
香港服务器4 | E5-2690 | 32G | 1T HDD | 50M/无限流量 | $336.00 | 立即申请 |
香港服务器5 | E5-2697 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器6 | E5-2620*2 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器7 | E5-2650*2 | 32G | 1T HDD | 50M/无限流量 | $436.00 | 立即申请 |
香港服务器8 | E5-2680*2 | 32G | 1T HDD | 50M/无限流量 | $476.00 | 立即申请 |
香港服务器9 | E5-2690*2 | 32G | 1T HDD | 50M/无限流量 | $556.00 | 立即申请 |
香港服务器10 | E5-2697*2 | 32G | 1T HDD | 50M/无限流量 | $596.00 | 立即申请 |
香港服务器11 | E5-2680v4*2 | 32G | 1T HDD | 50M/无限流量 | $696.00 | 立即申请 |
香港服务器12 | E5-2698v4*2 | 32G | 1T HDD | 50M/无限流量 | $796.00 | 立即申请 |
下面这段代码,假如会见呈现403,会跳到retry段,在没有,就会直接呈现403,而不会跳到http://www.server110.com/download/error403.html。
location @retry {
#return 409;
root /data1/;
index index.html index.htm;
error_page 403 http://www.server110.com/download/error403.html;
}
location / {
root /data/;
index index.html index.htm;
error_page 403 = @retry ;
error_page 404 = http://www.server110.com;
}
本日有做了个测试,假如利用lua把状态码改成此外,再利用error_page,会不会可以呢?
location @retry {
# return 409;
root /data/www;
index index.html index.htm index.php;
content_by_lua '
return ngx.exit(410);
';
error_page 404 = http://www.baidu.com;
error_page 403 = http://danhuaer.com/;
error_page 410 = http://news.17173.com/game/yzdzh.shtml;
}
location / {
root /data/www/www;
index index.html index.htm index.php;
error_page 403 = @retry;
error_page 404 = http://www.server110.com;
}
我把/data/www/www目次下的index.html删除了,匹配到/,会呈现403,再跳到retry中,利用lua返回401的状态码,看error_page是否能跳转到http://news.17173.com/game/yzdzh.shtml?
验证:
看来error_page在一次请求中,只能利用一次,无关状态码是否沟通。
不能利用error_page,怎么才气把nginx的状态码不让用户看的,而是可以直接跳到指定的页面?
虽然是利用lua就行跳转了
location @retry {
# return 409;
root /data/www;
index index.html index.htm index.php;
content_by_lua '
--return ngx.exit(410);
ngx.redirect("http://jd.com", 302);
';
error_page 404 = http://www.baidu.com;
error_page 403 = http://danhuaer.com/;
error_page 410 = http://news.17173.com/game/yzdzh.shtml;
}
location / {
root /data/www/www;
index index.html index.htm index.php;
error_page 403 = @retry;
error_page 404 = http://dl.pconline.com.cn;
}
会见就会直接跳转到jd.com。