需求:

如果本地没有这个url就rewrite到另外服务器上去请求;


实现:

server {

    listen       8080;
    if (!-e $request_filename ){
    rewrite ^/(.*)$ http://192.168.2.42/$1 permanent;

    }

}


说明:

当本地web上没有这个资源的时候,就跳转到192.168.2.42服务器上去请求;



nginx的rewrite指令中可以通过设置该条rewrite的flag来对该规则进行说明。一般可以设置的flag有:last,break,redirect,permanent四种。

redirect说明,这条规则是一个临时的跳转,并且此时如果观察http请求的话,http的响应状态码为302.
permanent说明,这条规则是一个永久性的跳转,并且此时,http的响应状态码为301.

那么什么是永久性跳转,什么是临时跳转,这有什么作用呢?下面我们举例说明:
如果有一个url,/a。
如果配置成
1
rewrite "/a" "http://test.html" redirect;
则说明这个跳转是一个临时跳转,此时如果有网络爬虫爬这个链接时,是不会更新自己的url数据库的。
但是如果配置成permanet,则爬虫会更新自己的url数据库,把/a更新为http://test.html
这也就是临时跳转和永久跳转的区别。