URL="https://reg.xxx.cn"
IP="reg.xxx.cn"
REPOS=$(curl -s -k -u "admin:a$6^tWduvy\!8" -X GET --header 'Accept: application/json' "${URL}/api/repositories?project_id=4"|grep "name"|awk -F '"' '{print $4}')
for rp in ${REPOS}
do
TAG=$( curl -s -k -u "admin:a$6^tWduvy\!8" -X GET --header 'Accept: application/json' "${URL}/api/repositories/${rp}/tags" |grep \"name\"|awk -F '"' '{print $4}'|sort -r|head -n1 )
IMAGE=$IP/$rp:$TAG
echo docker pull $IMAGE
docker save reg.xxx.com/$rp:$TAG -o $rp-$TAG.tar
done
---For harbor API V2.x---
Harbor_Address=https://harbor.xxx.cn #Harbor主机地址
Harbor_Pulltag=harbor.xxx.cn
Harbor_User=admin #登录Harbor的用户
Harbor_Passwd=Syxxx@I23 #登录Harbor的用户密码
Tar_File=/home/bjt/bjt-7niu/harbor #镜像tar包存放路径
mkdir -p $Tar_File
cd $Tar_File
# 获取Harbor中所有的项目(Projects)
Project_List=$(curl -s -u 'admin:Syswin@I23' --limit-rate 1M -H 'Content-Type: application/json' -X GET ${Harbor_Address}/api/v2.0/projects/bjtoon/repositories?page_size=100 -k | python -m json.tool | grep name | awk '/"name": /' | awk -F '"' '{print $4}' )
for Project in $Project_List;do
# 循环获取项目下所有的镜像
mkdir -p ${Tar_File}/${Project}
Image_Tags=$(curl -s -u $Harbor_User:$Harbor_Passwd -H "Content-Type: application/json" -X GET $Harbor_Address/v2/$Project/tags/list?page_size=100 -k | awk -F '"' '{print $8,$10,$12}'|sort |awk '{print $NF}')
Image_p_name="${Harbor_Pulltag}/${Project}:${Image_Tags}"
docker pull "${Image_p_name}"
docker save "${Image_p_name}" -o "${Project}".tar
gzip -9 $Project.tar
done
isssue:
kubectl get apiservice
kubectl delete apiservices.apiregistration.k8s.io -n monitor v1beta1.metrics.k8s.io
/bin/cp -f /usr/lib/firewalld/zones/trusted.xml /etc/firewalld/zones/
sed -i 's#DefaultZone=public#DefaultZone=trusted#g' /etc/firewalld/firewalld.conf
systemctl stop iptables
systemctl start firewalld
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p tcp -s 127.0.0.1 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 22 -s 192.164.132.5 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 22 -s 192.164.132.90 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p tcp -s 192.164.132.0/24 -m multiport --dport 6379,80,8080,8081,8090,8070,3306,873 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p tcp -s 192.164.40.0/24 -m multiport --dport 6379,80,8080,8081,8090,8070,3306,873 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 100 -p tcp -m multiport --dport 6379,80,8080,8081,8090,8070,3306,873 -j DROP
#若使用sys账号来导数据
expdp \'sys/"密码" AS SYSDBA\'
expdp \'sys/"abc@GSLRAC" AS SYSDBA\' version=11.2.0.1.0 schemas=ORA_OPENPLATFORM directory=ora_dmp dumpfile=ORA_OPENPLATFORM.dmp logfile=ORG_OPENPLATFORM20231109.log
要解决这个问题,必须在用户收到报文前,将报文的数据中包含的绝对路径都添加统一的前缀,如/my/public,/my/api,/my/login,这样nginx代理配置则可以简化为:
location /my/ {
proxy_pass http://my_server/;
proxy_set_header Host $host:$server_port;
proxy_redirect / /my/;
}
location /other/ {
proxy_pass http://other_server/;
proxy_set_header Host $host:$server_port;
proxy_redirect / /other/;
}
nginx的ngx_http_sub_module模块提供了类似的报文数据替换功能,该模块默认不会安装,需要在编译nginx时添加--with-http_sub_module参数,或者直接下载nginx的rpm包。
使用sub_filter对数据包进行替换的语法如下:
location /my/ {
proxy_pass http://my_server/;
proxy_set_header Host $host:$server_port;
sub_filter 'href="/' 'href="/my/';
sub_filter 'src="/' 'src="/my/';
sub_filter_types text/html;
sub_filter_once off;
}
上述配置会将/my/下的所有响应报文内容的href="/替换为href="/my,以及src="/替换为src="/my,即为所有的绝对路径添加公共前缀。
注意,如果需要配置多个sub_filter,必须保证nginx是1.9.4版本之上的。
总结
即便如此,sub_filter也不能解决所有问题。目前流行的js框架都会有自动渲染url的功能,也就是说,很多绝对路径并非写死在静态页面内,也是由js代码框架动态生成的,面对这样的情况,sub_filter也是无能为力了。对于这样的情况,笔者只能由衷地奉劝,还是安静的改代码吧!