如何在Apache网站服务器上使用Vultr CDN

如何在Apache网站服务器上使用Vultr CDN

Apache 是一个网络服务器应用程序,使用您的域名 URL 托管和交付网络应用程序。向 Apache 网络服务器发出的每个请求都会增加服务器负载,并影响网络应用程序的总体性能。通过集成 Vultr CDN URL,Web 服务器会使用你的 CDN 发送特定请求,从而加快你的 Web 应用程序内容交付过程。

本文将介绍如何在 Apache 网络服务器上使用 Vultr CDN。您将设置 Apache 虚拟主机配置,将特定请求模式转发到 Vultr CDN URL,同时在源服务器 URL 上保持较轻的请求。

准备工作

开始之前:

定位 Apache 虚拟主机配置

  1. 测试 Apache 配置是否存在错误。
    $ apachectl configtest
    
  2. 切换到 Apache 数据主目录。
    $ cd /etc/apache2/
    
  3. 使用您的域名搜索 Apache 目录中的所有文件,以验证活动虚拟主机配置文件。用您的实际域名替换 example.com
    $ grep -r "example.com" /etc/apache2/
    

    Output:

    /etc/apache2/sites-available/example.com.conf:  ServerName www.example.com

    上述输出返回 example.conf 作为与 example.com 域相关的活动虚拟主机配置文件。默认情况下,如果服务器上没有可用的虚拟主机配置,Apache 会使用 /etc/apache2/sites-available/000-default.conf 文件。

  4. 查看虚拟主机配置文件并验证工作中的 DocumentRoot 目录。
    $ cat /etc/apache2/sites-available/example.com.conf | grep DocumentRoot
    

    Output:

    DocumentRoot /var/www/html
  5. 切换到文档根目录。
    $ cd /var/www/html/
    
  6. 创建一个新的 images 目录来测试 Apache 请求模式。
    $ sudo mkdir images
    
  7. 切换到目录。
    $ cd images
    

    将样本文件上传到该目录,以测试 Apache 的请求模式。

方法 1:设置修改响应

Apache 响应修改会匹配请求,并将原始请求 URL 修改为 Vultr CDN URL。响应修改过程使用 mod_substitutemod_filter 模块来过滤和修改指向你的 Vultr CDN URL 的请求。请按照以下步骤设置响应修改,并将请求模式转发到你的 Vultr CDN。

  1. 启用 Apache mod_substitute 模块。
    $ sudo a2enmod substitute
    

    输出:

    Enabling module substitute.
    To activate the new configuration, you need to run:
    systemctl restart apache2
  2. 启用 Apache mod_filter 模块,按 MIME 类型过滤请求。
    $ sudo a2enmod filter
    
  3. 重启 Apache 以激活模块。
    $ sudo systemctl restart apache2
    
  4. 使用 Nano 等文本编辑器打开 Apache 虚拟主机配置文件。
    $ sudo nano /etc/apache2/sites-available/example.com.conf
    
  5. 在文件的 </VirtualHost> 指令之前添加以下配置。用实际值替换 example.comcdn-example88.vultrcdn.com
    AddOutputFilterByType SUBSTITUTE text/html
    Substitute s|example.com/images/|cdn-example88.vultrcdn.com/images/|i
    Substitute s|example.com/css/|cdn-example88.vultrcdn.com/css/|i
    Substitute s|example.com/js/|cdn-example88.vultrcdn.com/js/|i
    

    保存并关闭文件。

    上述响应修改配置可匹配 imagescss 或 js 目录模式下的所有请求。匹配请求模式下的所有文件都会被修改为 Vultr CDN URL。例如,请求 example.com/images/image.png 会被修改为 cdn-example88.vultrcdn.com/images/image.png 。在配置中:

    AddOutputFilterByType:按 MIME 类型过滤请求模式。 /text/html 匹配 HTML 请求,包括图像、样式表和脚本等嵌入元素。其他 MIME 类型包括

    •  text/css,application/javascript,application/custom,image/jpg,image/pngimage/webp

    ,可根据网络应用程序结构过滤请求。

    • Substitute s|.....|...|:

    转换源 s| URL 以匹配目标 | Vultr CDN URL。例如, Substitute s|example.com/images/|cdn-example88.vultrcdn.com/images/|iexample.com/images 请求模式修改为你的 Vultr CDN URL cdn-example88.vultrcdn.com/images
    $1:加载初始请求类型,以匹配正确的 Vultr CDN URL。
    |i : 匹配请求模式中的所有大小写格式。例如, example.com/images/IMAGE.pngexample.com/images/logo.png 都会被修改为相应的 Vultr CDN URL。

    要在配置中匹配其他请求模式,可添加新的 Substitute 指令,将请求模式修改为 Vultr CDN URL。修改后的 Apache 虚拟主机配置应如下所示:

    APACHECONFCopy

    <VirtualHost *:80>
    <Directory /var/www/html/>
    Options -Indexes
    Require all granted
    </Directory>
    ServerName example.com
    DocumentRoot /var/www/html
    DirectoryIndex index.htm index.html
    AddOutputFilterByType SUBSTITUTE text/html
    Substitute s|example.com/images/|cdn-example88.vultrcdn.com/images/|i
    Substitute s|example.com/css/|cdn-example88.vultrcdn.com/css/|i
    Substitute s|example.com/js/|cdn-example88.vultrcdn.com/js/|i
    </VirtualHost>
    
  6. 测试 Apache 配置是否存在错误。
    $ apachectl configtest
    
  7. 重启 Apache 以应用配置更改。
    $ sudo systemctl restart apache2
    

方法 2:设置重定向

Apache 会使用 mod_rewite 模块将原始请求 URL 重写为 Vultr CDN URL,从而重定向特定请求类型。每个请求模式都会被重定向到相应的 Vultr CDN URL,该 URL 会根据请求提供缓存数据。例如,请求 example.com/image.png 会重定向到 CDN URL cdn-example88.vultrcdn.com/image.png。请按照以下步骤将特定请求模式重定向到你的 Vultr CDN URL。

  1. 启用 Apache mod_rewrite 模块。
    $ sudo a2enmod rewrite
    

    输出:

    Enabling module rewrite.
    To activate the new configuration, you need to run:
    systemctl restart apache2
  2. 重启 Apache 网络服务器以激活模块。
    $ sudo systemctl restart apache2
    
  3. 打开 Apache 虚拟主机配置文件。
    $ sudo nano /etc/apache2/sites-available/example.com.conf
    
    •  在文件的 </VirtualHost> 指令之前添加以下配置。用实际值替换 example.comcdn.example88.vultrcdn.com
      RewriteEngine On
      RewriteCond %{HTTP_HOST} ^example.com
      RewriteRule \.(jpg|jpeg|png|gif|webp|css|js|scss|svg|pdf|txt)$ https://cdn-example88.vultrcdn.com%{REQUEST_URI} [L,R=301]
      

      保存并关闭文件。

      上述配置会将所有符合  .jpeg.jpg.png,,.webp,.js,.css  文件类型的请求重定向到 Vultr CDN URL。在配置中

      RewriteEngine On: 启用 Apache mod_rewrite 模块。
      RewriteCond %{HTTP_HOST} : 设置请求重写条件,以匹配主机域名 URL 模式。
      RewriteRule:以正则表达式格式定义重写匹配请求模式的重定向规则。

      • \.(jpg|jpeg|png|gif|webp|css|js|scss|svg|pdf|txt)

      值会将所有声明文件类型的请求匹配到你的 Vultr CDN URL。例如,请求 https://example.com/image.png 会重定向到 https://cdn-example88.vultrcdn.com/image.png
      [R=301,L]永久重定向所有匹配请求到你的 Vultr CDN URL,状态代码为 301 Moved PermanentlyL 设置重定向条件 last 重定向,不需要额外的重写规则。

      修改后的 Apache 虚拟主机配置应如下所示:

       

      <VirtualHost *:80>
      <Directory /var/www/html/>
      Options -Indexes
      Require all granted
      </Directory>
      ServerName example.com
      DocumentRoot /var/www/html
      DirectoryIndex index.htm index.html
      RewriteEngine On
      RewriteCond %{HTTP_HOST} ^example.com
      RewriteRule \.(jpg|jpeg|png|gif|webp|css|js|scss|svg|pdf|txt)$ https://cdn-example88.vultrcdn.com%{REQUEST_URI} [L,R=301]
      </VirtualHost>
      
  4. 测试 Apache 配置是否存在错误。
    $ apachectl configtest
    
  5. 重新启动 Apache 网络服务器以应用配置更改。
    $ sudo systemctl restart apache2
    

小结

您已经设置了 Apache 网络服务器,将请求模式转发到 Vultr CDN URL。根据您的主机环境,您可以在 .htaccess 文件或虚拟主机配置文件中应用请求转发规则,以提高网络应用程序的性能和用户体验。对于每种配置方法,请查看浏览器开发工具并导航到网络来源选项卡,以验证由 Vultr CDN URL 交付的所有文件。

评论留言