使用Nginx实例组实现免备案CDN加速外部源站

<返回列表

本文将介绍如何在 Google Cloud 上创建一个 Nginx 反向代理实例组,实现 Google Cloud CDN 回源到外部源站。

本文的配置主要基于下面架构:

文中将介绍的配置主要分为以下几个部分: 创建配置文件存储桶 创建模板虚机实例 创建自定义镜像 创建实例模板 创建托管实例组 创建负载均衡和 CDN

修改和更新代理配置

创建配置文件存储桶

首先创建一个 Cloud Storage 的存储桶,用来存放代理服务器配置文件。

在本地创建一个名为 nginx-proxy-config.conf 的配置文件,并上传到存储桶。配置文件的内容如下,注意将回源域名改为实际使用的域名:

server { ?listen ? ?80; ?server_name ~^(.+)$; ?gzip on; ?gzip_proxied any; ?location / { ? ?access_log /var/log/nginx/upstream.log; ? ?add_header Cache-Control "public, max-age=604800"; ? ?proxy_http_version 1.1; ? ?proxy_pass ?https://xxx.s3.amazonaws.com/; ?} }

创建模板虚机实例

创建一个 GCE VM 实例,用来制作实例组的模板。

在实例创建完毕后,点击“SSH”按钮登录到虚机命令行。

运行以下命令,安装 gcsfuse。

export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s` echo "deb http://packages.cloud.google.com/apt $GCSFUSE_REPO main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo apt-get update sudo apt-get install gcsfuse

修改 /etc/fuse.conf,将”user_allow_other”前面的注释符去掉。

运行下面的命令,将之前创建的存放配置文件的存储桶挂载到本地目录。

mkdir ~/gcs gcsfuse -o allow_other cdn-proxy-config /home/eugeneyu/gcs

运行下面的命令,确认可以访问到存储桶上的配置文件。

运行下面命令,将可使用的文件句柄上限提高。

sudo su - ulimit -n 99999 echo "fs.file-max=99999" >> /etc/sysctl.conf echo "* soft nofile 99999" >> /etc/security/limits.conf echo "* hard nofile 99999" >> /etc/security/limits.conf exit

运行以下命令,安装 Nginx 服务。

sudo apt-get update sudo apt-get install -y nginx

修改 Nginx 的主配置文件 /etc/nginx/nginx.conf,增加最大连接数,并将反向代理配置文件导入。

运行下面命令重启 Nginx:

sudo service nginx restart

测试 Nginx 代理访问源站资源是否成功。请将下面地址中的 IP 替换成 Nginx 服务器的公网 IP,将文件路径替换成源站测试文件的路径。

curl -X GET http://35.198.234.55/do_not_delete/test.txt

创建自定义镜像

基于 Nginx 服务器系统盘创建自定义镜像。

?

创建实例模板

镜像创建好后,创建一个 Instance Template。修改以下配置: 1. “Machine type”根据需要选择 2 vCPUs 或者 4 vCPUs 机型; 2. 修改“Boot disk”配置,选择刚刚创建好的镜像;

3. “Firewall”勾选”Allow HTTP traffic”和”Allow HTTPS traffic”; 4. “Networking”中的“Network tags”填写“cdn-proxy”;

5. Management 中的 Startup script 中填入以下内容,确保新实例启动时自动挂载配置文件存储桶,并增加文件句柄上限。

配置好后,点击“Create”按钮创建模板。

创建托管实例组

创建实例组。修改以下配置。

Location 选择 Multiple zones Region 选择离源站最近的区域,比如新加坡为 asia-southeast1 Instance template 选择上一步创建好的模板 Minimum number of instances 根据预估用量选择机器数量,比如 5000 QPS 可以选择 5 台

Health check 创建一个 80 端口的健康检查,各项配置采用默认值

配置好后,点击“Create”按钮创建实例组。

创建负载均衡和免备案CDN加速

选择 HTTP(S) Load Balancing

Backend Configuration 选择 Create a backend service

在新建的 Backend service 配置中选择之前创建的 Instance group,勾选“Enable Cloud CDN”,并选择之前创建的 HTTP 健康检查。

在 Frontend configuration 中的 IP address 选择 Create IP address,创建一个固定公网地址用于 CDN 前端访问地址。

配置好后,点击“Create”按钮创建负载均衡和 CDN。

负载均衡和高防CDN加速大概需要 15-20 分钟初始化。之后可以访问相关文件进行测试。

修改和更新代理配置

如果源站域名等配置需要修改,可以更新 Nginx 代理配置,重新上传到配置存储桶覆盖之前文件,并用以下脚本将实例组中所有实例的 Nginx 运行 reload 更新配置。

#!/bin/bash # Example: ./nginx_reload.sh mig_nginx mig_nginx='mig-cdn-proxy-india-v8' region=asia-south1 if [ "$1" != "" ]; then mig_nginx=$1 fi instance_array=( $(gcloud compute instance-groups list-instances --region=$region $mig_nginx | cut -d" " -f1) ) total_instances=$(expr ${#instance_array[@]} - 1) if [ ${#instance_array[@]} -eq 0 ]; then echo "Instance Group doesn't exist or is empty!" exit else echo "Instance Group has $total_instances instances" fi for (( i=1; i<=$(( ${#instance_array[@]} )) - 1; i++ )) do echo -n "Reload Nginx config file on ${instance_array[i]}..." gcloud compute ssh ${instance_array[i]} --command="sudo service nginx reload" done echo -e ' Done!'

国内免备案VPS301跳转服务器国内免备案服务器域名被墙跳转301,绕过信息安全中心不能放违反法律法规内容!(北京免备案镇江免备案江苏免备案辽宁免备案vps山东联通免备案
分享新闻到:

更多帮助

国内高速免备案云主机轻松部署网站无需烦恼

新闻中心 2026-03-19
在互联网发展迅速的当下,建立一个属于自己的网站已经成为很多个人和企业的需求。过去,搭建网站常常意味着需要投入大量精力,不仅在服务器的选择上犹豫不决,还会被备案过···
查看全文

2026年国内免备案主机空间推荐及选择指南

新闻中心 2026-03-19
每到新一年,许多站长和创业者都会关注网站空间的更新与选择。尤其是在2026年,随着国内互联网管理政策的不断调整,免备案主机空间成为了不少用户的热门选择。许多人会···
查看全文

国内VPS如何轻松实现免备案建站?最新实用攻略揭秘

新闻中心 2026-03-18
谈及建站,许多站长都知道国内主机面临的一个显著门槛,就是备案。对于创业初期的网站、临时小项目或者仅供测试的平台来说,这道流程常常让用户感到繁琐甚至望而却步。于是···
查看全文
返回更多帮助