lala.im:给你的网站接入CloudFlare Railgun

運維技術·lala.im · 2019-09-18 · 98 人浏览

原文地址:https://lala.im/6366.html,請支持原作者!該處僅作轉載。

Railgun这个本来是CloudFlare收费的Plan才能使用的功能,不过如果你有CF合作伙伴(partners)账号,也可以免费用到这个东西,我也是最近才知道(后知后觉233)
然后我翻出了大概2年前申请的partners账号,决定折腾看看给网站启用了这个后有啥BUFF加成。。
在partners管理界面内还需要签一份“协议”才能开启Railgun功能,感觉好正规的样子:

範例
8好意思,管你是谁,让我填地址和手机号,只能5可奉告:

範例
这是在签合同嘛,竟然还需要电子签名,有点意思哟:

範例
只能从零开始了,CF的partners界面里面是没有添加域名/管理DNS解析记录等功能的,所以还是得自己搭建一个面板,看了下好像目前最好用的是这个:
https://github.com/ZE3kr/Cloudflare-CNAME-Setup
如果你不想搭建这个或者说你根本就没有partners账号,没关系,文章的尾部我会把我搭建的面板地址放出来,你可以直接用我搭建的即可。
因发现这东西作用似乎不明显,所以我也懒得折腾了,鸽了。。
以下搭建过程基于Debian9:

apt -y update
apt -y install apt-transport-https ca-certificates lsb-release
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
apt -y update

安装Git/Nginx/PHP7.3:

apt -y install git nginx php7.3-common php7.3-cli php7.3-fpm php7.3-curl

拉取项目文件/给予正确的权限/复制一份配置文件:

cd /var/www
git clone https://github.com/ZE3kr/Cloudflare-CNAME-Setup.git
mv Cloudflare-CNAME-Setup cloudflare-panel
chown -R www-data:www-data cloudflare-panel
cp cloudflare-panel/config.example.php cloudflare-panel/config.php

编辑配置文件:

nano cloudflare-panel/config.php

修改下面两行的配置:

define('HOST_KEY', 'API');
define('HOST_MAIL', 'Email');

新建Nginx站点配置文件:

nano /etc/nginx/conf.d/cloudflare-panel.conf

写入:

server {
    listen       80;
    server_name  cf.koko.cat;
    index        index.html index.htm index.php;
    root         /var/www/cloudflare-panel;
    client_max_body_size 50m;

    location ~ \.php$ {
        fastcgi_pass   unix:/run/php/php7.3-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

重启Nginx完成部署:

systemctl restart nginx

打开这个面板,登录你的CF账号:

範例
在面板内添加你要接入CF的域名:

範例
然后添加你的域名DNS记录:

範例
这里提供三种接入方式:CNAME/IP/NS,我这边使用CNAME的方式,可以看到下面的CNAME记录:

範例
将对应的CNAME记录值添加到你的域名管理处(我拿NameCheap示范):

範例
用CNAME的好处就是不需要去改动域名本身的DNS服务器地址,不需要强制去用CF的DNS了,可以任意使用一家的DNS服务器。
接着我们需要在CF的partners管理界面添加一个Railgun的Token:

範例
然后在VPS上安装Railgun软件。
Railgun的软件简单点说分为服务端和客户端,服务端我们不用管,那是CloudFlare的事情,我们只需要在要启用Railgun功能的VPS内安装客户端即可。
以下安装过程基于Debian9:

apt -y update
apt -y install apt-transport-https ca-certificates lsb-release curl
curl -C - https://pkg.cloudflare.com/pubkey.gpg | apt-key add -
echo "deb http://pkg.cloudflare.com/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/cloudflare-main.list
apt -y update
apt -y install railgun-stable

其他Linux发行版可参考:
https://pkg.cloudflare.com/
railgun-stable安装完成之后编辑如下配置文件:

nano /etc/railgun/railgun.conf

修改:

activation.token = YOUR_TOKEN_HERE
activation.railgun_host = YOUR_PUBLIC_IP_OR_HOSTNAME

启动railgun服务:

systemctl start railgun.service
systemctl enable railgun.service

回到partners管理界面,将要开启Railgun的域名添加到这里,只需要输入根域名即可:

範例
现在可以登录CF的普通面板,看看Railgun是否已经开启,显示ON就行了,旁边那个Test就算显示错误也无所谓(因为它只测试www域,如果你是其他子域名就无法测试):

範例
如何正确验证Railgun是否成功开启?访问你的网站,查看Header头,看有没有这一行:

範例
具体参数对应的解释:
https://support.cloudflare.com/hc/en-us/articles/202963724-Reading-and-Interpreting-the-Cf-Railgun-Header

運維技術 lala.im
Theme Jasmine by Kent Liao