使用 Nginx 镜像网站实现「文档自由」

在日常学习和工作中我们经常需要查阅一些文档,但大部分文档都部署在国外的服务器或 CDN 上,导致访问速度较慢甚至偶尔无法访问。为了解决这个问题,我们可以使用 Nginx 在自己的服务器上搭建一个镜像网站,本文以 Kubernetes 官网 为例,演示如何使用 Nginx 镜像网站实现「文档自由」。

首先我们需要准备一台云服务器并安装好 Nginx,本文使用的是 1.27 版本。另外需要一个域名作为镜像网站入口,这里以 mirror.lin2ur.cn 为例,目标是通过 kubernetes.mirror.lin2ur.cn 域名访问 Kubernetes 官网。为了提供 HTTPS 访问我们还需要为域名申请一个 SSL 证书。

0. 反向代理

镜像网站本质上就是反向代理目标网站,Nginx 反向代理的配置相信大家都很熟悉了,下面我们来编写配置文件:

# /etc/nginx/conf.d/mirror.conf

map $host $mirror_host {
  kubernetes.mirror.lin2ur.cn kubernetes.io;
  default "";
}

server {
    listen 80;
    listen 443 ssl;

    server_name *.mirror.lin2ur.cn;

    ssl_certificate conf.d/tls.crt;
    ssl_certificate_key conf.d/tls.key;

    resolver 223.5.5.5 ipv6=off;

    proxy_ssl_server_name on;

    proxy_set_header Host "$proxy_host";

    location / {
      if ( "$mirror_host" = "" ) {
        return 404;
      }
      
      proxy_redirect https://$proxy_host https://$host;

      proxy_pass "${scheme}://${mirror_host}";
    }
}

map $host $mirror_host 指令根据客户端请求域名匹配目标域名,方便后续添加新的镜像网站。

resolver 223.5.5.5 指定域名解析服务,在反向代理场景中这个配置是必须的。

proxy_ssl_server_name on 开启与上游服务器建立 SSL/TLS 连接时发送 SNI (Server Name Indication) 扩展字段,部分 CDN 厂商(如 Cloudflare) 强制要求发送 SNI。

proxy_set_header Host "$proxy_host" 设置反向代理时 Host 请求头为目标域名,默认情况下 Nginx 会将客户端请求的 Host 头发送给上游的服务。

proxy_redirect 上游服务返回 30x 跳转响应时重写 Location 响应头使客户端跳转到镜像网站域名,以 Kubernetes 官网为例,使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值