下面我将详细讲解“使用Nginx反向代理与proxy_cache缓存搭建CDN服务器的配置方法”。
一、前置条件
在开始之前需要先准备好以下内容:
1.一台云服务器
2.域名
3.安装了Nginx的服务器
二、配置Nginx反向代理
- 安装Nginx
首先需要安装Nginx,可以使用命令进行安装:
$ sudo apt-get update
$ sudo apt-get install nginx
- 配置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缓存
- 安装proxy_cache模块
需要安装proxy_cache模块才能进行缓存的配置。可以使用以下命令进行安装:
$ sudo apt-get install nginx-extras
安装完成后,该模块即可支持。
- 配置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自动清理。
- 验证proxy_cache是否设置成功
可以使用以下命令进行验证:
$ sudo nginx -t
如果返回信息中包含 proxy_cache_path 则表示配置成功。
之后,重启Nginx即可完成所有配置。
具体过程就像下面这样:
$ sudo service nginx restart
四、示例
- 使用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请求转发到外部服务器,同时对请求数据进行缓存。这样能够减轻服务器压力,加速网站访问。
- 使用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技术站