Nginx反向代理+跳轉接口實現部分鏈接重定向

需求:在無法控制網站代碼,只能修改用戶HOST的前提下,將網站域名HOST指向反向代理服務器,在接口服務器中配置的鏈接通過接口服務器跳轉,未配置的鏈接原樣顯示

location / {
    set $flag 0;
    if (!-e $request_filename){
        set $flag "${flag}1";
    }
    if ($http_host ~ (.*)(api.xxx.com)(.*)?){
        set $flag "${flag}2";
    }
    if ($flag = "012"){
        rewrite  ^(.*)$  /index.php?s=/$1  last;
        break;
    }
    set $proxy_flag 0;
    if ($args !~ (.*)?proxy=){
        set $proxy_flag "${proxy_flag}1";
    }
    if ($http_host ~ (.*)(!?api.xxx.com)(.*)?){
        set $proxy_flag "${proxy_flag}2";
    }
    if ($proxy_flag = "012"){
        rewrite  ^(.*)$  http://api.xxx.com/5c21692f3c6cd?referer=$scheme://$http_host$request_uri redirect;
        break;
    }
    if ($args ~ (.*)?proxy=){
        
    }
    proxy_pass $scheme://$http_host$request_uri;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    add_header X-Cache $upstream_cache_status;
    expires 12h;
}
location ~ .*\.(php|jsp|cgi|asp|aspx|flv|swf|xml|css|js|png|jpg)?$
{
    proxy_pass $scheme://$http_host$request_uri;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    add_header X-Cache $upstream_cache_status;
    expires 12h;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章