使用nginx做反向代理解决jenkins插件下载的问题

发布时间 2023-04-21 02:27:46作者: lzjasd
yum -y install nginx

cp /etc/nginx/nginx.conf{,.bak}
vim /etc/nginx/nginx.conf
server {
    listen       80;
    listen       [::]:80;
    server_name  updates.jenkins.io;
    root     /usr/share/nginx/html;
    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
    error_page 404 /404.html;
    location = /404.html {
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
    location / {
        sub_filter_once off;
        sub_filter_types *;
        sub_filter 'https://updates.jenkins.io' 'http://updates.jenkins.io';
        proxy_pass https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/;
    }
    location /download/plugins {
        proxy_pass http://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins;
    }
}

vim /etc/hosts
192.168.14.134 updates.jenkins.io

访问http://updates.jenkins.io 返回的是https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates 

jenkins的版本是2.39.1 
http://updates.jenkins.io/dynamic-stable-2.319.1/update-center.json

sub_filter: Jenkins会校验SSL证书的有效性,因此我这里将使用nginx的sub_filter模块将update-center.json返回的内容修改为http协议的
https://www.jianshu.com/p/0ce5ecf16944  sub_filter 文档
subs_filter用法与sub_filter类似,如下所示:

subs_filter_types:*; 需要替换的类型,如text/htnl  text/plain  application/ javascript等,以空格分隔
sub_filter_once: on/off; 是否只替换一次
subs_filter: xxx1  xxx2; 前面的参数为原始内容,后面的参数为替换后的内容
subs_filter: xxx3  xxx4; 前面的参数为原始内容,后面的参数为替换后的内容

sub_filter模块为nginx官方自带的模块,功能为替换掉返回给客户端数据的指定内容。需要使用该功能时只需要在编译时添加对该模块的支持,便会编译到nginx的内核。但是sub_filter的缺点之一是只支持配置一个sub_filter替换。