如何在Nginx网络服务器上使用Vultr CDN

如何在Nginx网络服务器上使用Vultr CDN

Nginx 是一款网络服务器应用程序,可让你使用域名 URL 托管和交付网络应用程序。为了交付静态文件并减少服务器负载,你可以集成一个 Vultr CDN,将文件卸载到多个区域交付,而不是你的原始服务器位置。集成后,Nginx 会向所有匹配的用户请求交付 Vultr CDN URL 响应数据,而不是原始网络应用程序 URL。

本文介绍如何将 Vultr CDN 与 Nginx 网络服务器结合使用,将特定类型的请求路由到 CDN 缓存的静态资源。您将根据自己的网络应用程序结构,使用新的请求规则修改现有的 Nginx 配置,以便使用 Vultr CDN URL 传输图片等静态文件。

准备工作

开始之前:

定位 Nginx 虚拟主机配置

要设置 Nginx Web 服务器并将请求转发到 Vultr CDN URL,请按照以下步骤验证工作虚拟主机配置,并根据 CDN 规则进行修改。

  1. 切换到 Nginx 数据目录。
    $ cd /etc/nginx/
    
  2. 搜索包含域名的所有 Nginx 配置。例如, example.com
    $ grep -r "example.com" /etc/nginx/
    

    输出结果应如下所示:

    /etc/nginx/sites-available/example.com:    server_name example.com;

    在上述输出结果中,你的域名使用了 /etc/nginx/sites-available/example.com 虚拟主机配置。通常,如果没有虚拟主机配置,Nginx会使用默认配置文件 /etc/nginx/sites-available/default

  3. 查看虚拟主机配置文件并验证网络根目录值。
    $ cat /etc/nginx/sites-available/example.com
    

    输出:

    root /var/www/example.com;
  4. 切换到网络根目录,设置示例应用程序结构。
    $ cd /var/www/example.com
    
  5. 创建一个新的样本 images 目录,以测试 Nginx 规则。.
    $ sudo mkdir images
    

    将图像文件等样本文件上传到要缓存的目录,并使用 Vultr CDN URL 进行测试。

方法 1:设置修改响应

Nginx 响应修改使用 sub_filter 模块将特定请求类型转发到你的 Vultr CDN URL。当用户创建一个新请求时,Nginx 会修改请求并将其转换到你的 Vultr CDN URL,而不是原服务器 URL。请按照以下步骤设置响应修改,以便将特定请求模式匹配到你的 Vultr CDN URL。

  1. 默认情况下,Nginx 的 sub_filter 模块与 http_sub_module 一起运行。请确认该模块在你的服务器上可用。
    $ nginx -V
    

    输出:

    ........--with-http_gzip_static_module --with-http_sub_module
  2. 使用 Nano 等文本编辑器打开 Nginx 虚拟主机配置。
    $ sudo nano /etc/nginx/sites-available/example.com
    
  3. 在文件中添加以下 sub_filter 配置。
    sub_filter 'https://example.com/images/' 'https://cdn-example88.vultrcdn.com/images/';
    sub_filter 'https://example.com/files/' 'https://cdn-example88.vultrcdn.com/files/';
    proxy_set_header Accept-Encoding "";
    sub_filter_once off;
    

    保存并关闭文件。

    上述配置会用 Vultr CDN URL 替换所有匹配的请求模式。在配置中:

    • sub_filter '' '';:

    将原始请求 URL '' 修改为目标 URL '' 。例如,所有与 URL 模式 https://example.com/images/ 匹配的请求都会被修改为你的 Vultr CDN URL cdn-example88.vultrcdn.com/images/ 。同一 URL 方案中的文件请求,例如 example.com/images/image.png,会将请求模式匹配到您的 Vultr CDN URL /cdn- example88.vultrcdn.com/images/image.png

    • proxy_set_header Accept-Encoding "";:

    关闭 Nginx 请求中的 Gzip 压缩,以避免与 Vultr CDN 响应数据发生压缩冲突。

    • sub_filter_once off;:

    启用多个内容修改规则,以持续修改 Vultr CDN URL 请求。

    修改后的 Nginx 配置应如下所示:

    server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name example.com;
    root /var/www/html;
    index index.php index.htm index.nginx-debian.html;
    location / {
    try_files $uri $uri/ =404;
    }
    sub_filter 'https://example.com/images/' 'https://cdn-example88.vultrcdn.com/images/';
    sub_filter 'https://example.com/files/' 'https://cdn-example88.vultrcdn.com/files/';
    proxy_set_header Accept-Encoding "";
    sub_filter_once off;
    }
    
  4. 测试 Nginx 配置是否有错误。
    $ sudo nginx -t
    

    输出:

    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
  5. 重启 Nginx 以应用配置更改。
    $ sudo systemctl restart nginx
    

方法 2:设置重定向

重定向会将特定的 Nginx 请求类型转发到你的 Vultr CDN URL。请求将被重定向到 Vultr CDN URL,而不是从你的原始 URL 发送响应。请按照以下步骤将请求从你的主机 URL 重定向到 Vultr CDN URL。

    1. 打开 Nginx 虚拟主机配置。
      $ sudo nano /etc/nginx/sites-available/example.com
    • 在文件中添加包含目标请求类型的新 location 块。用实际的 Vultr CDN URL 替换 cdn-example88.vultrcdn
      location ~ ^(/images/|/files/|/css/|/js/)/.*\.(jpe?g|webp|gif|css|png|js|ico|pdf|m4a|mov|mp3)$ {
                  rewrite  ^ https://cdn-example88.vultrcdn.com$request_uri?
                  permanent;
                  access_log off;
            }
      
      

      保存并关闭文件。

      上述配置会将符合  images/files/css/,js/  目录或文件扩展名 .jpg,.jpeg.png.webp.css.js 的所有请求重定向到你的 Vultr CDN URL。在配置中

      1. location ~ ^(/images/|/files/|/css/|/js/)/.*\.(jpe?g|webp|gif|css|png|js|ico|pdf|m4a|mov|mp3)$

      :定义要替换为 Vultr CDN URL 的请求模式。

      • rewrite ^ https://cdn-example88.vultrcdn.com$request_uri?:

      用你的 Vultr CDN URL 重写所有匹配的请求类型。 $request_uri? 表达式与您的请求模式相匹配,以保留原始主机 URL 结构。

      • permanent:

      使用 301 Moved Permanently 状态代码永久重定向请求。

      • access_log off:

      关闭所有重定向信息的访问日志。

      修改后的 Nginx 配置应如下所示:

  1. server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name example.com;
    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;
    location / {
    try_files $uri $uri/ =404;
    }
    location ~ ^(/images/|/files/|/css/|/js/)/.*\.(jpe?g|webp|gif|css|png|js|ico|pdf|m4a|mov|mp3)$ {
    rewrite  ^ https://cdn-example88.vultrcdn.com$request_uri?
    permanent;
    access_log off;
    }
    }
    
  2. 测试 Nginx 配置是否有错误。
    $ sudo nginx -t
    
  3. 重启 Nginx 以应用配置更改。
    $ sudo systemctl restart nginx
    

小结

您已将 Nginx 网络服务器配置为将网络应用程序请求转发到 Vultr CDN URL。Web 服务器会将每个有效的请求模式转发到 Vultr CDN URL,该 URL 会根据请求的数据类型提供响应。根据你的网络应用程序结构,修改你的 Nginx 配置,使用你的 Vultr CDN URL 发送符合特定模式的所有内容类型,以提高一般应用程序的性能和用户体验。

评论留言