1、location 嵌套if

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

 upstream www_pool {
    server 10.0.0.7:80  weight=1;
    server 10.0.0.8:80  weight=1;
}

 upstream bbs_pool {
    server 10.0.0.7:8080  weight=1;
    server 10.0.0.8:8080  weight=1;
}

 upstream blog_pool {
    server 10.0.0.7:8081  weight=1;
    server 10.0.0.8:8081  weight=1;
}

upstream upload_pool {
    server 10.0.0.7:8082  weight=1;
    server 10.0.0.8:8082  weight=1;
}


server {
        listen       80;
        server_name  www.etiantian.org;
        location / {
                proxy_set_header Host  $host;
                proxy_set_header X-Forwarded-For $remote_addr;

                 if ($request_uri  ~* "/" ){                                                $request_uri:请求的RUL,匹配  www.etiantian.org,就跳转
                        proxy_pass http://blog_pool;
                 }

                if ($request_uri  ~* "/upload/" ){                                                                                匹配  www.etiantian.org/upload/,就跳转
                        proxy_pass http://upload_pool;
                 }

                if ($request_uri   ~*   ".*\.(jpg|png)$") {                                                                      匹配  www.etiantian.org/*.jpg|png,就跳转
                        proxy_pass http://www_pool;

                 }

                if ($request_uri   ~*   ".*\.(php|php5)$"){                                                                    匹配  www.etiantian.org/*.php|php5,就跳转
                        proxy_pass http://bbs_pool;
                 }
 
                if ($http_user_agent ~* (AppEngine-Google|Sosospider|vivispider|YRSpider|trendictionbot|Tomato|QunarBot|jikespider|MJ12bot|HuaweiSymantecSpider|Spinn3r|QihooBot|sohu-search|yodao|YoudaoBot|robozilla|MJ12bot|NHN|Twiceler)){
                        return 403;
                 }  

               if ($http_user_agent ~* (Baiduspider|Googlebot|Sogou\ web\ spider)){               #这是跳转爬虫的规则
                       proxy_pass http://www_rocen_com;
                }
        }
}

其中$http_user_agent 表示nginx日志中的  "$http_user_agent"
log_format  main  '$remote_addr - $remote_user [$time_local] $http_host "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
                      
其中 $request_uri  表示nginx日志中的  "$request"
log_format  main  '$remote_addr - $remote_user [$time_local] $http_host "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

更多推荐