使用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日

相关文章

  • Spring Boot中使用MongoDB的连接池配置的方法

    下面是Spring Boot中使用MongoDB的连接池配置的方法的完整攻略。 一、添加MongoDB依赖在Spring Boot项目的pom.xml文件中添加MongoDB的依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactI…

    人工智能概论 2023年5月25日
    00
  • SpringBoot之RabbitMQ的使用方法

    下面我为您提供 “SpringBoot之RabbitMQ的使用方法”的完整攻略。 前置条件 在开始学习SpringBoot之RabbitMQ的使用方法之前,我们需要先了解以下几个概念: RabbitMQ:开源的消息队列系统,它可以作为消息中间件在分布式系统中传递消息,它实现了高可用、高性能以及可扩展性。 AMQP(高级消息队列协议):消息协议,用于定义异构系…

    人工智能概览 2023年5月25日
    00
  • 基于Java编写一个简单的风控组件

    讲解”基于Java编写一个简单的风控组件”的完整攻略,以下是几个步骤: 步骤一:定义风险规则及规则引擎 首先,需要确定风控规则,比如用户账户余额低于某个阈值,活动参与次数超过限制等。然后,需要选择一个规则引擎来支持这些规则,这里推荐使用Drools作为规则引擎,它支持基于规则的编程,提供了强大的规则匹配和执行引擎。 步骤二:编写规则 在使用Drools之前,…

    人工智能概论 2023年5月25日
    00
  • pytorch如何冻结某层参数的实现

    使用 PyTorch 冻结某层参数通常有两种方式:通过手动设置 requires_grad 属性或者使用特定的库函数来实现。接下来我将详细讲解这两种实现方式的完整攻略。 手动设置 requires_grad 属性 在 PyTorch 中,我们可以通过手动设置某层的 requires_grad 属性来冻结该层的所有参数。具体步骤如下: 定义模型 我们定义一个简…

    人工智能概论 2023年5月25日
    00
  • nginx自定义变量与内置预定义变量的使用

    下面是nginx自定义变量与内置预定义变量的使用的完整攻略: 1. nginx内置预定义变量 nginx提供了很多内置的预定义变量,可以在配置文件中方便的获取客户端信息和服务器信息。下面是几个常用的内置预定义变量: $remote_addr: 客户端的IP地址 $http_user_agent: 客户端使用的User-Agent字符串 $request_ur…

    人工智能概览 2023年5月25日
    00
  • 构建双vip的高可用MySQL集群

    构建双 VIP 的高可用 MySQL 集群 准备工作 安装 MySQL 数据库,选择适用于您操作系统的 MySQL 版本,并配置好相关的参数。可选使用 Percona Server 或 MariaDB 作为 MySQL 的替代品,二者均提供了更好的性能与可靠的特性。 安装 HAProxy,HAProxy 是一个开源的负载均衡器,它可以用来分发来自客户端的负载…

    人工智能概览 2023年5月25日
    00
  • 如何用Python 实现全连接神经网络(Multi-layer Perceptron)

    下面是Python实现全连接神经网络的攻略: 什么是全连接神经网络? 全连接神经网络(FCN)是深度学习中的一种基本架构,它是由多个全连接层(Fully Connected Layer)构成的深层神经网络,典型的形式是多层感知机(Multi-Layer Perceptron,简称 MLP),其可以应用于分类、回归等任务。在每个全连接层中,每一个神经元都与上下…

    人工智能概论 2023年5月25日
    00
  • python实现学员管理系统(面向对象版)

    下面我来详细讲解“Python实现学员管理系统(面向对象版)”的攻略。 系统介绍 本系统基于Python面向对象编程实现,能够实现对学员的管理,包括添加学员、删除学员、查看学员列表、修改学员信息等功能。本系统采用了文本文件存储数据的方法,每个学员的信息都存储在一个独立的文本文件中。 系统功能 本系统实现了如下功能: 添加学员信息; 删除学员信息; 修改学员信…

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