需要進行兩次反代袭灯,雖然只進行一次反代并替換文本也會有效果衷笋,但頁面會空白和報錯史汗,應該是受到YApi nodejs后臺的gzip壓縮影響
location /yapi_forward/ {
proxy_pass http://127.0.0.1:3000/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_http_version 1.1;
proxy_set_header Accept-Encoding 'gzip';
gunzip on;
}
location /yapi/ {
proxy_pass https://yourdomain.com/yapi_forward/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_http_version 1.1;
proxy_set_header Accept-Encoding "";
sub_filter '"/prd' '"/yapi/prd';
sub_filter '"/iconfont' '"/yapi/iconfont';
sub_filter '"/image' '"/yapi/image';
sub_filter '"/api' '"/yapi/api';
sub_filter '"/user' '"/yapi/user';
sub_filter '"/group' '"/yapi/group';
sub_filter '"/project' '"/yapi/project';
sub_filter '"/mock' '"/yapi/mock';
sub_filter 'path:"/' 'path:"/yapi/';
sub_filter 'to:"/' 'to:"/yapi/';
sub_filter 'history.push("/' 'history.push("/yapi/';
sub_filter_types *;
sub_filter_once off;
}
進行兩次反代替換gzip文本內容最簡單的例子
location /forward {
proxy_pass https://example.com;
proxy_set_header Accept-Encoding 'gzip';
gunzip on;
}
location / {
proxy_pass https://yourdomain.com/forward;
proxy_set_header Accept-Encoding '';
sub_filter_types *;
sub_filter_once off;
sub_filter 'example.com' 'yourdomain.com';
}
參考了以下內容
https://github.com/YMFE/yapi/issues/1431
https://www.app-scope.com/tutorial/force-nginx-to-decompress-gzipped-request.html