nginx-自建docker-hub-代理


####################################
log_format format_hub_example_com '[$time_iso8601] [$http_host] [$remote_addr] [$uri] $status $body_bytes_sent "$request" "$http_referer" "$http_user_agent" ';
####################################
# 使用 map 来匹配和替换 upstream 头部中的 auth.docker.io
map $upstream_http_www_authenticate $m_www_authenticate_replaced {
    "~auth\.docker\.io(.*)" "$1";
    default "";
}

map $m_www_authenticate_replaced $m_final_replaced {
    "~(.*)" 'Bearer realm=\"$scheme://$host$1';
    default "";
}

server
{
 	####################################	
 	server_name hub.example.com;
 	####################################	
 	listen 0.0.0.0:80;
 	listen 0.0.0.0:443 ssl http2 ; 
 	ssl_certificate          /code/hub_example_com-full.crt;
 	ssl_certificate_key	 /code/hub_example_com-full.key;
 	####################################	
 	if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {		set $year $1;		set $month $2;		set $day $3;	}
 	access_log  /code/hub_example_com.access.$year-$month-$day.log format_hub_example_com ;  	
        error_log   /code/hub_example_com.error.log;
 	####################################	
	# listen 443 ssl http2;
	# 改成自己的域名
	# server_name xxxx.example.com;

	# 证书部分
	# ssl_certificate 证书地址;
	# ssl_certificate_key 密钥地址;

	ssl_session_timeout 24h;

	# TLS 版本控制
	ssl_protocols TLSv1.2 TLSv1.3;
	ssl_prefer_server_ciphers on;      
	ssl_ciphers TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:EECDH+CHACHA20:EECDH+AESGCM:EECDH+AES;

	proxy_ssl_server_name on;

	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header X-Forwarded-Proto $scheme;

	# 修改jwt授权地址
	proxy_hide_header www-authenticate;
	add_header www-authenticate "$m_final_replaced" always;

	# 关闭缓存
	proxy_buffering off;
	# 转发认证相关
	proxy_set_header Authorization $http_authorization;
	proxy_pass_header  Authorization;

	# 对 upstream 状态码检查,实现 error_page 错误重定向
	proxy_intercept_errors on;
	recursive_error_pages on;
	# 根据状态码执行对应操作,以下为301、302、307状态码都会触发
	error_page 301 302 307 = @handle_redirect;

	# v1 api
	location /v1 {
		proxy_pass https://index.docker.io;
		proxy_set_header Host index.docker.io;
	}

	# v2 api
	location /v2 {
		proxy_pass https://index.docker.io;
		proxy_set_header Host index.docker.io;
	}

	# jwt授权地址
	location /token {
		proxy_pass https://auth.docker.io;
		proxy_set_header Host auth.docker.io;
	}

	location / {
		# Docker hub 的官方镜像仓库
		proxy_pass https://registry-1.docker.io;
		proxy_set_header Host registry-1.docker.io;
	}
	
	#处理重定向
	location @handle_redirect {
		resolver 1.1.1.1;
		set $saved_redirect_location '$upstream_http_location';
		proxy_pass $saved_redirect_location;
	}
}

 

LVM逻辑卷扩容的基本操作

扩容的基本顺序是: 增加PV→VG组扩容→LV扩容。

1. 检查当前磁盘使用情况
2. 查看 LVM 状态
3. 查看物理卷和卷组

# 组合在一起的命令
df -h
lvdisplay
pvdisplay
vgdisplay

4. 增加物理卷(假设你已经添加了新的物理磁盘)
使用 fdisk 或 parted 创建新的分区 (例如 /dev/sdb1),
将其转化为物理卷:
pvcreate /dev/sdb1
将新物理卷添加到卷组:
vgextend <卷组名> /dev/sdb1
如果已分区未分配,跳过第四步以上步骤
预设 卷组名称为 <卷组名> /dev/ubuntu-vg/ubuntu-lv

5. 扩展逻辑卷

执行扩展分配空间,

假设逻辑卷的名称是 ubuntu-lv,卷组名是 ubuntu-vg,执行以下命令扩展逻辑卷:

lvextend -L +150G /dev/ubuntu-vg/ubuntu-lv

6. 扩展文件系统

对于 ext4 文件系统,可以使用以下命令:

resize2fs /dev/ubuntu-vg/buntu-lv

对于 xfs 文件系统,可以使用:

xfs_growfs /

7. 验证空间是否增加

df -h

一些链接

https://andyx.net/storage/2019/08/logo-header.png
https://andyx.net/resolve_no_space_left_on_device_error_and_inode_error/
解决因Linux系统磁盘空间不足导致No Space Left on Device错误(含inode占用100%问题)

#当目录下的大于1G、100MB、10MB的文件
find . -type f -size +1024M
find . -type f -size +100M
find . -type f -size +10M

sudo du -s * | sort -nr | head #显示前10个占用空间最大的文件或目录
dudo du -hm --max-depth=2 | sort -nr | head -12 #显示前12个占用空间大的目录(包括二级目录)

一些大概有用的地址
luxirty
一个基于Google的无广告搜索引擎

逆向工具集合

ReverseTool

 

逆向工具集合

Java & Jar (Android)

 

Hook Tools

Android 漏洞查询

C++ & So (Android)

 

C# & Dll & EXE

 

iOS

 

Hook Tools

Others

 

实用参考

 

==============
参考
https://github.com/weixinbao/ReverseTool