本篇文章摘抄于他人的文章,来自于CSDN的JeremyIT同学,但我还是自己重新敲一遍。
实现的效果是:访问网站的任何页面,都跳转到同一个页面。而这一个页面就是维护页面,可以根据需要修改。
server { listen 80; index index.html index.htm; server_name www.example.com;
if ($request_uri !~ "^/502.html$") { rewrite ^(.*) http://www.example.com/502.html permanent; } location / { ... } }
更简单的写法:(有待实验,好像不成功,但看着挺简单的)
server { listen 80; server_name www.example.com; # ... 省略掉 N 行代码 # 所有页面都转跳到维护页 rewrite ^(.*)$ /pages/maintain.html break; }
还有一类需求是:
1.某些重要页面还是能继续访问,比如充值页面等。
2.对于新上线的功能,我们不希望外部访问,但是我们公司内部可以访问,这样就能进行测试,测试完后
再对外开放。
server
{if ($request_uri !~* ^(/weihu.htm|/pay/index.htm)$) { rewrite ^/(.*) /weihu.htm last; } location ~* / {
allow 10.20.252.250;
deny all; } }
对于公司内部(10.20.252.250)来说,我们可以访问一切位置。
对于外部人员来说,如果我们访问的uri不是/weihu.htm或者/pay/index.htm,那么就会重写为/weihu.htm。
但上面的设置没有实现,需要再次重写。
当用户访问我们的网站,出现502状态码时,nginx自动跳到维护页面,显得更人性化。
server { listen 80; server_name www.example.com; # ... 省略掉 N 行代码 error_page 502 = @tempdown; location @tempdown { rewrite ^(.*)$ /pages/maintain.html break; } }