添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
俊逸的小马驹  ·  Stack Overflow 的 ...·  3 周前    · 
苦闷的猕猴桃  ·  Install/Update ...·  3 周前    · 
重感情的苦瓜  ·  zhibo.24.jdwwinvest.cn ...·  1 月前    · 
含蓄的酸菜鱼  ·  通过github ...·  1 月前    · 
活泼的小熊猫  ·  如何在 WordPress ...·  5 天前    · 
仗义的铅笔  ·  Archunit: Validate ...·  2 月前    · 

站点访问速度及安全一直以来都是站长们建站所关注的重要内容。为了满足站点能够被全球用户的访问需求,通常我们会采用云服务商提供的 CDN 来加速访问速度。比如国外比较知名的 AWS 提供的 Cloudfront 、GCP 提供的 Cloud CDN 以及 Cloudflare 公司提供的 Cloudflare 等,国内比较知名的腾讯云提供的 CDN 、阿里云提供的 CDN 、又拍云提供的 CDN 以及七牛云提供的 CDN 等。(PS:其实国内的其他云服务商比如华为云、百度云、滴滴云、京东云等等都提供了 CDN 解决方案。)

CDN 除了常规的多地、多节点缓存加速之外,还可以清洗流量,从而预防和对抗 DDoS 攻击。如果我们购买的服务器不是固定带宽、流量无限,而是大带宽、流量按量付费的话,遇到 DDoS 就会受到很大损失。DDoS 攻击不仅会让服务器上的服务无法正常响应请求,从而造成 Nginx 或 Apache 服务过饱和,甚至服务器宕机,还会产生很大的无效入站流量消耗。一般来说,流量按量计费是对入站流量进行计费。这样一来,光流量这一项的经济损失就可能会是非常庞大的数字。

当我们给 Nginx 站点套上一层 Cloudflare 或者其他 CDN 服务之后,用户访问服务时会先经过 Cloudflare。Cloudflare 免费版就具有清洗流量的功能:当 Cloudflare 发现流量来自僵尸网络或者异常流量请求时,就会拒绝响应或者只响应某些请求,而这些请求也会转给真实的服务器进行响应。从这里也可以看出来,用上 Cloudflare 之后,用户根本不知道真实服务器的 IP 地址或其他信息,能进一步保障服务器的安全。

这里,为了在实际的应用场景中来实践,特地选取了适合个人搭建的个人短地址服务 Yourls

Yourls

Yourls ( Y our O wn URL S hortener) 是一款基于 PHP 的允许你运行自己的短地址服务的免费和开源的软件。你可以完全控制你的数据、详细的统计和分析、插件以及更多。以下是源代码和官方推荐插件的仓库:

  • YOURLS/YOURLS
  • YOURLS/awesome-yourls
  • 为了更加快速地部署 Yourls 服务,这里选用 docker-compose 的方式进行部署。以下是配置文件内容:

    # docker-compose.yml
    version: '3.1'
    services:
      yourls:
        image: yourls
        restart: always
        ports:
          - 8080:80
        environment:
          YOURLS_DB_PASS: abcdefgh
          YOURLS_SITE: https://url.com
          YOURLS_USER: admin
          YOURLS_PASS: admin@2022
      mysql:
        image: mysql:5.7
        restart: always
        volumes:
          - ./db:/var/lib/mysql
        environment:
          MYSQL_ROOT_PASSWORD: abcdefgh
          MYSQL_DATABASE: yourls
    

      Yourls 的官方 Docker 镜像提供了多种服务方式和体系架构,如下图所示。如果使用的服务器体系架构不同,对应的 mysql 镜像也应做出更改。比如,如果服务器是 IBM 的 s390x 架构,就可以选 ibmcom/mysql-s390x:5.7.34

      编辑完配置文件后执行以下命令启动 Yourls 服务:

    docker-compose up -d
    

    Cloudflare 配置

  • 访问 Cloudflare 控制台,选择进入已添加的域名操作面板。
  • 添加域名记录

  • 进入 DNS 面板,点击添加记录按钮。
  • 采用 A 记录或 CNAME 记录类型,这里的代理状态一定要像现在这样打开,否则 Cloudflare 将不会被启用。
  •   在 Nginx 配置目录 /etc/nginx/sites-available 下新增 yourls 配置文件(需使用 sudo 权限方可新增),配置文件内容如下所示:

    # /etc/nginx/sites-available/yourls
    server {
      listen   443 ssl http2;
      ssl_certificate    /home/linux1/ssl/url.com.pem;
      ssl_certificate_key    /home/linux1/ssl/url.com.key;
      server_name url.com;
      index index.php index.html index.htm;
      access_log /var/log/nginx/yourls.access.log;
      error_log /var/log/nginx/yourls.error.log;
      location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $proxy_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    

    (可选)只允许 Cloudflare 访问

      为了进一步确保真实服务器只响应来自 Cloudflare 转发的请求,我们可以在 Nginx 的配置文件中增加对于允许访问 IP 地址的限制。如下配置文件中的 IPv4/IPv6 的 IP 地址段均来自 Cloudflare 官方声明。此 cf.conf 文件放置在 /etc/nginx 目录下。

    # cf.conf
    # https://www.cloudflare.com/ips
    # IPv4
    allow 103.21.244.0/22;
    allow 103.22.200.0/22;
    allow 103.31.4.0/22;
    allow 104.16.0.0/12;
    allow 108.162.192.0/18;
    allow 131.0.72.0/22;
    allow 141.101.64.0/18;
    allow 162.158.0.0/15;
    allow 172.64.0.0/13;
    allow 173.245.48.0/20;
    allow 188.114.96.0/20;
    allow 190.93.240.0/20;
    allow 197.234.240.0/22;
    allow 198.41.128.0/17;
    # IPv6
    allow 2400:cb00::/32;
    allow 2606:4700::/32;
    allow 2803:f800::/32;
    allow 2405:b500::/32;
    allow 2405:8100::/32;
    allow 2a06:98c0::/29;
    allow 2c0f:f248::/32;
    

      另外,如要启用该配置文件,需在刚才写好的站点配置文件 yourls 中再增加两行来使其生效,内容如下所示:

    server {
        include cf.conf;
      deny all;
    
    sudo ln -s /etc/nginx/sites-available/yourls /etc/nginx/sites-enabled/yourls
    sudo nginx -s reload
    

      访问 https://url.com/install.php 确认是否正常访问 Yourls 的安装初始化界面,如下所示。点击 Install YOURLS 按钮即可完成安装。

  • 如何在 Ubuntu 20.04 上使用 Cloudflare 和 Nginx 托管网站
  • 让 Nginx 只允许 Cloudflare 反向代理流量以隐藏源站
  • 本文标题:《 给 Nginx 站点套上一层 Cloudflare 》

    本文链接:https://lisz.me/tech/webmaster/nginx-cloudflare.html

    本文最后一次更新为 天前,文章中的某些内容可能已过时!