使用Nginx反向代理与proxy_cache缓存搭建CDN服务器的配置方法

下面我将详细讲解“使用Nginx反向代理与proxy_cache缓存搭建CDN服务器的配置方法”。

一、前置条件

在开始之前需要先准备好以下内容:

1.一台云服务器
2.域名
3.安装了Nginx的服务器

二、配置Nginx反向代理

  1. 安装Nginx

首先需要安装Nginx,可以使用命令进行安装:

$ sudo apt-get update
$ sudo apt-get install nginx
  1. 配置Nginx

在安装完Nginx之后,需要进行一些基本配置。进入到Nginx的配置文件夹中,一般在 /etc/nginx/ 下面。可以使用以下命令进入:

$ cd /etc/nginx/

进入到该文件夹之后,可以先备份原来的Nginx配置文件,并创建一个新的配置文件:

$ sudo cp nginx.conf nginx.conf.bak
$ sudo vi nginx.conf

在新的配置文件中,需要添加上反向代理的配置。可以按如下示例进行配置:

server {
    listen 80;
    server_name www.yourdomain.com;

    location / {
        proxy_pass http://yourserverip;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        ##以下是缓存的配置
        proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=static_cache:10m inactive=60m;
        proxy_cache_key "$scheme$request_method$host$request_uri";
        proxy_cache_valid 200 60m;
        proxy_cache_valid 404 1m;
        expires 1d;
    }
}

三、配置proxy_cache缓存

  1. 安装proxy_cache模块

需要安装proxy_cache模块才能进行缓存的配置。可以使用以下命令进行安装:

$ sudo apt-get install nginx-extras

安装完成后,该模块即可支持。

  1. 配置proxy_cache

在上述的Nginx反向代理的配置文件中,已经添加了proxy_cache的配置。可以根据自己的需求进行调整。

  • proxy_cache_path

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=static_cache:10m inactive=60m;

  • levels

levels=1:2 表示缓存目录是/var/cache/nginx目录下的一级目录和二级目录(可以根据自己的需求设定)

  • keys_zone

keys_zone=static_cache:10m 表示缓存使用的内存大小是10M,可以存储大量缓存页面的键值对。这个值需要根据服务器的具体情况来进行调整。

  • inactive

inactive=60m 表示该缓存在60分钟内没有被访问会被Nginx自动清理。

  1. 验证proxy_cache是否设置成功

可以使用以下命令进行验证:

$ sudo nginx -t

如果返回信息中包含 proxy_cache_path 则表示配置成功。

之后,重启Nginx即可完成所有配置。

具体过程就像下面这样:

$ sudo service nginx restart

四、示例

  1. 使用Nginx反向代理与proxy_cache缓存搭建CDN服务器

如果你的网站已经有了独立的云服务器,但发现带宽比较小,而且服务器的维护也比较麻烦,可以使用Nginx反向代理与proxy_cache缓存搭建CDN服务器。可以使用添加以下配置来实现:

server {
    ##监听端口为80
    listen 80 default_server;

    ##监听IP地址为本机IP或者允许访问此CDN的IP地址
    listen 127.0.0.1;

    ##匹配请求
    location / {
      ##将请求转发到外部服务器
        proxy_pass http://your_server_address.com;

        #以下是设置缓存的配置
        proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=static_cache:10m inactive=60m;
        proxy_cache_key "$scheme$request_method$host$request_uri";
        proxy_cache_valid 200 60m;
        proxy_cache_valid 404 1m;
        expires 1d;

        ##缓存条件
        proxy_cache_bypass $http_pragma;
        proxy_cache_revalidate on;
      }
 }

使用这样的配置,可以将所有的HTTP请求转发到外部服务器,同时对请求数据进行缓存。这样能够减轻服务器压力,加速网站访问。

  1. 使用Nginx反向代理和proxy_cache缓存加速WordPress网站

WordPress 是现在比较流行的博客系统之一。虽然WordPress可以自带缓存,但是出于对网站速度提升的要求,可以通过配置 Nginx 反向代理和proxy_cache缓存来进一步加速网站。

以下示例配置:

 server {
        ##监听IP地址为本机IP或允许访问CDN的IP地址
        listen 127.0.0.1;
        ##监听端口
        listen 80;

        ##这里需要替换成自己的域名
        server_name yourdomain.com;

        ## WP缓存配置开始
        location = /favicon.ico {
            log_not_found off;
            access_log off;
        }

        ## google一下 Nginx和WordPress的缓存优化,可以发现
        ## Nginx官网给出了最佳方案,把http{}里的配置加进来
        ## WP缓存配置结束

        ##处理PHP请求
        location ~ \.php$ {
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
            ## WP缓存的配置选项开始
            if ($request_method = POST) {
               add_header Cache-Control "no-cache";
            }

            if ($query_string != "") {
                set $no_cache "";
            }

            if ($http_cookie ~* "(comment_author|wp\-postpass|wordpress_\w+|wp\-cookie\-test|woocommerce_cart_hash|woocommerce_items_in_cart)") {
               set $no_cache "1";
            }

            if ($http_cookie ~* "(wp\-config|wp\-settings)") {
               set $no_cache "1";
            }

            if ($request_uri ~* "\/(sitemap(_index)?\.xml(\.gz)?)") {
               set $no_cache "1";
            }

            if ($http_user_agent ~* "(bot|crawl|robot|slurp|spider)") {
                set $no_cache "1";
            }

            if ($no_cache = "1") {
                add_header X-Cache-Status "no-cache";
            }

            if ($http_pragma = "no-cache") {
                add_header X-Cache-Status "no-cache";
            }

            ## WP缓存的配置选项结束
        }

        ##处理静态文件的请求,如js,css,图片等
        location / {
            ##代理到实际的服务器
            proxy_pass http://your_server_address.com;

            ##缓存配置
            proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=static_cache:10m inactive=60m;
            proxy_cache_key "$scheme$request_method$host$request_uri";
            proxy_cache_valid 200 60m;
            proxy_cache_valid 404 1m;
            expires 1d;

            ##缓存条件
            proxy_cache_bypass $http_pragma;
            proxy_cache_revalidate on;
        }
}

这份代码将所有的PHP请求转发到后端的应用服务器上,同时对静态资源进行缓存。因为缓存对调用频率高的资源的优化提升非常巨大,因此该配置能够加速网页加载。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Nginx反向代理与proxy_cache缓存搭建CDN服务器的配置方法 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • Python中的十大图像处理工具(小结)

    Python中的十大图像处理工具(小结) 本文将介绍Python中的十大图像处理工具,其功能包括图像增强、裁剪、滤波、分割和识别等,涉及的工具包括: Pillow OpenCV-Python scikit-image mahotas imageio SimpleCV pydicom imutils pyocr pytesseract 下面将对这些工具进行详细…

    人工智能概览 2023年5月25日
    00
  • Vue兼容ie9的问题全面解决方案

    下面是关于“Vue兼容IE9的问题全面解决方案”的攻略: 1. 问题描述 Vue版本从2.x开始,不再支持IE8以及更早的版本,而IE9在Vue项目中的兼容性问题也比较突出,容易导致项目运行出错或数据无法正确展示。 2. 解决方案 2.1 使用babel-polyfill兼容ES6的语法 IE浏览器不支持ES6的语法,我们需要使用babel将ES6转为ES5…

    人工智能概览 2023年5月25日
    00
  • MongoDB分片键的选择和案例实例详解

    关于”MongoDB分片键的选择和案例实例详解”的攻略,我可以提供以下内容: 1. 什么是MongoDB分片键? MongoDB分片是一种横向扩展的方式,一般通过分片键来进行数据划分和分布式存储。分片键是用于划分数据和分发到不同的Shard节点上的字段或字段组合。MongoDB中允许指定多个分片键来构建复合分片键。 2. MongoDB分片键的选择 在选择M…

    人工智能概论 2023年5月25日
    00
  • pytorch载入预训练模型后,实现训练指定层

    在PyTorch中,如果要载入预训练模型并对指定层进行训练,可以按照以下步骤进行操作: 载入预训练模型 在PyTorch中,载入预训练模型可以使用torchvision.models模块中的预置模型,例如resnet18。此外,如果需要使用自己的预训练模型,也可以使用torch.load()方法将之前训练好的模型载入。代码如下: import torch i…

    人工智能概论 2023年5月25日
    00
  • django使用graphql的实例

    下面我将对“django使用graphql的实例”的完整攻略进行详细讲解。 什么是GraphQL GraphQL是一种用于API的查询语言,与REST等传统的API相比,它有以下优点: 可以精确地请求所需的数据,避免了传统API请求大量不需要的数据 支持多个查询和变更操作的批量请求 可以通过类型系统和查询架构自动文档化查询 Django中使用GraphQL的…

    人工智能概论 2023年5月25日
    00
  • django formset实现数据表的批量操作的示例代码

    我来详细讲解一下“django formset实现数据表的批量操作”的完整攻略,以下是具体步骤: 1. 安装django formset的依赖包 Django Formset是一个强大的工具,用于处理与表单相关的重复数据集。首先需要安装django和django-formset-bootstrap4包。 可以通过以下命令在命令行中安装: pip instal…

    人工智能概论 2023年5月25日
    00
  • deepin 15.3 X64系统中安装mongodb的方法步骤

    以下是详细的 “deepin 15.3 X64系统中安装mongodb的方法步骤”攻略。 下载并安装MongoDB 步骤1:导入MongoDB公共密钥(GPG key) sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 9DA31620334BD75D9DCB49F368818…

    人工智能概览 2023年5月25日
    00
  • Gradio机器学习模型快速部署工具应用分享

    Gradio机器学习模型快速部署工具应用分享 简介 Gradio是一款基于Python的机器学习模型快速部署工具,提供了简洁的API和可视化的界面来帮助开发者快速构建Web界面并部署机器学习模型。Gradio支持各种类型的输入和输出,包括图像、文本、音频、视频等,具有可扩展性和实用性。 使用步骤 使用Gradio进行机器学习模型部署的步骤分为以下几个: 安装…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部