实验准备:
1、一台可以正常访问官方仓库的服务器(例如:阿里云香港,或其他)
2、准备ssl证书(如果买过域名可以免费申请)
实验步骤:
安装nginx with proxy
1、在代理服务器安装带有ngx_http_proxy_connect_module模块的nginx
以nginx 1.24为例
su - root
apt update
#安装nginx依赖
apt install libpcre3 libpcre3-dev
cd
#下载源码包
wget https://nginx.org/download/nginx-1.24.0.tar.gz
wget https://github.com/chobits/ngx_http_proxy_connect_module/archive/refs/tags/v0.0.5.tar.gz
tar -zxvf nginx-1.24.0.tar.gz
tar -zxvf v0.0.5.tar.gz
cd nginx-1.24.0
#应用模块,并编译安装
patch -p1 < /root/ngx_http_proxy_connect_module-0.0.5/patch/proxy_connect_rewrite_102101.patch
./configure --add-module=/root/ngx_http_proxy_connect_module-0.0.5 --prefix=/opt/nginx --with-http_ssl_module
make
make install
编译安装完成后,在/opt/nginx,你也可以在configure时自行修改
配置nginx作为正向代理
nginx.conf配置如下
/opt/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
resolver 114.114.114.114; #指定DNS服务器IP地址
listen 7890;
location / {
proxy_pass http://$host$request_uri; #设定代理服务器的协议和地址
proxy_set_header HOST $host;
proxy_buffers 256 4k;
proxy_max_temp_file_size 0k;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_next_upstream error timeout invalid_header http_502;
}
}
server {
listen 7891 ssl;
# self signed certificate generated via openssl command
ssl_certificate_key /opt/nginx/conf/server.key;
ssl_certificate /opt/nginx/conf/server.pem;
ssl_session_cache shared:SSL:1m;
# dns resolver used by forward proxying
resolver 8.8.8.8 ipv6=off;
# forward proxy for CONNECT request
proxy_connect;
proxy_connect_allow all;
proxy_connect_connect_timeout 10s;
proxy_connect_data_timeout 10s;
# defined by yourself for non-CONNECT request
# Example: reverse proxy for non-CONNECT requests
location / {
proxy_pass http://$host;
proxy_set_header Host $host;
}
}
}
检查配置文件是否有误
/opt/nginx/sbin/nginx -t
启动nginx
/opt/nginx/sbin/nginx
docker代理配置:
登录到docker需要使用代理访问的服务器
修改docker配置如下
vi /etc/docker/daemon.json
{
"proxies": {
"http-proxy": "http://proxy.example.com:7890",
"https-proxy": "https://proxy.example.com:7891",
"no-proxy": "*.test.example.com,.example.org,127.0.0.0/8"
}
}
重启docker服务systemctl restart docker
还不快抢沙发