利用Nginx反向代理功能自建CDN加速頁面服務(wù)
一般我們選用CDN加速服務(wù)會用到第三方CDN服務(wù),也有利用服務(wù)器自建CDN軟件工具。當(dāng)然,我們還可以用到Nginx Web反代的方式實(shí)現(xiàn)緩存加速頁面,實(shí)現(xiàn)CDN加速的方式。具體的操作如下。
第一、部署前的準(zhǔn)備
這里,我們需要準(zhǔn)備2臺或者以上的服務(wù)器。而且可以分布不同的地區(qū)。比如A和B,A在美國,使用WordPress,IP地址:1.2.3.4,域名綁定:www.dbjr.com.cn。B在日本,空白網(wǎng)站,IP地址:2.3.4.5,域名綁定:static.jb51.net。
網(wǎng)站主站架設(shè)在A服務(wù)器上(即所有網(wǎng)站內(nèi)容,包含動(dòng)態(tài)文件、數(shù)據(jù)庫等),我們將在B站上架設(shè)CDN服務(wù)。
第二、程序安裝
由于A站上已經(jīng)將服務(wù)環(huán)境架設(shè)好,網(wǎng)站也已經(jīng)正常運(yùn)行,同時(shí)也無需在A站上進(jìn)行多余操作,故此,所有操作未進(jìn)行說明均表示B站進(jìn)行。
首先,自建CDN這里選擇的是ngx_cache_purge這一模塊,要運(yùn)行這個(gè)模塊,就需要服務(wù)器上安裝有Nginx,若之前安裝過的,重新安裝一次,加上參數(shù)即可。
下載相關(guān)軟件:
wget http://nginx.org/download/nginx-1.10.3.tar.gz wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz tar zxf nginx-1.10.3 tar zxf ngx_cache_purge-2.3.tar.gz
安裝Nginx:
cd nginx-1.10.3 ./configure –prefix=/usr/local/nginx –user=www –group=www –add-module=../ngx_cache_purge-2.3
因?yàn)楦魅诵枨蟛煌?,所以這里只是寫了ngx_cache_purge模塊,若有其他需求請自行參考nginx編譯參數(shù)
make && make install
驗(yàn)證ngx_cache_purge安裝:
/usr/local/nginx/sbin/nginx -V
若出現(xiàn)了“–add-module=../ngx_cache_purge-2.3”字樣表示已經(jīng)安裝完成
Nginx配置:
打開nginx.conf文件,在HTTP區(qū)域中添加如下內(nèi)容
proxy_connect_timeout 5; proxy_read_timeout 60; proxy_send_timeout 5; proxy_buffer_size 16k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; proxy_cache_path /data/wwwroot/static.jb51.net levels=1:2 keys_zone=cache_one:200m inactive=30d max_size=5g; proxy_temp_path /data/wwwroot/static.jb51.net/tmp;
注意上面的“/data/wwwroot/static.jb51.net”,這是B站的網(wǎng)站路徑
打開網(wǎng)站配置文件,在添加或修改如下內(nèi)容,將靜態(tài)文件進(jìn)行緩存
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico|js|css)$ {
proxy_pass http://www.dbjr.com.cn;
proxy_redirect off;
proxy_set_header Host www.dbjr.com.cn;
proxy_cache cache_one;
proxy_cache_valid 200 302 304 365d;
proxy_cache_valid 301 1d;
proxy_cache_valid any 1m;
add_header Images-Cache “$upstream_cache_status from $host”;
add_header Pragma public;
add_header Cache-Control “public, must-revalidate, proxy-revalidate”;
access_log off;
log_not_found off;
expires max;
}最后重新載入下Nginx,當(dāng)以后訪問static.jb51.net時(shí),B站會先檢查本地是否有緩存,若緩存存在則直接展示,若不存在則會訪問www.dbjr.com.cn,將資源保存下來進(jìn)行展示。
第三、網(wǎng)站程序配置
現(xiàn)在CDN架設(shè)好了,但是要怎樣使用到網(wǎng)站上呢?
主站所有靜態(tài)資源域名必須是static.jb51.net
static.jb51.net域名必須正確指向B站
WordPress替換法
如果網(wǎng)站使用的是WordPress程序,那可以很方便的對資源進(jìn)行操作,其實(shí)也無需操作,就是把靜態(tài)資源域名進(jìn)行更改即可,反正CDN會自動(dòng)拉取資源到本地!
打開本站模板函數(shù)文件“function.php”,在其中添加如下代碼
if ( !is_admin() ) {
add_action(‘wp_loaded','lovekk_ob_start');
function lovekk_ob_start() {
ob_start(‘lovekk_cdn_replace');
}
function lovekk_cdn_replace($html) {
return str_replace(‘http://www.dbjr.com.cn/wp-content/uploads/', ‘http://static.jb51.net/wp-content/uploads/', $html);
}
}若本站安裝有緩存插件,將緩存先清空一次,然后嘗試打開網(wǎng)站,若uploads目錄下所有靜態(tài)資源均指向static.jb51.net域名,且訪問正常,說明已經(jīng)安裝正常。
以上就是利用Nginx反向代理功能自建CDN加速頁面服務(wù)的詳細(xì)內(nèi)容,更多關(guān)于利用Nginx反向代理功能自建CDN加速頁面服務(wù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
nginx實(shí)現(xiàn)請求轉(zhuǎn)發(fā)
本文給大家分享的是使用nginx實(shí)現(xiàn)代理(請求轉(zhuǎn)發(fā))的教程及簡單示例,非常實(shí)用,有需要的小伙伴可以參考下2017-07-07
Nginx之正向代理與反向代理進(jìn)階方式(支持https)
文章介紹了如何在Nginx中實(shí)現(xiàn)正向代理和反向代理對HTTP和HTTPS協(xié)議的支持,通過使用第三方模塊`ngx_http_proxy_connect_module`和Nginx內(nèi)置的`ngx_http_ssl_module`,可以實(shí)現(xiàn)Nginx對HTTPS的正向和反向代理2025-03-03
Nginx location 和 proxy_pass路徑配置問題小結(jié)
本文是基于 location 的匹配末尾是否配置 / 和 proxy_pass 末尾是否配置 / ,進(jìn)行測試,完全還原了整個(gè)測試過程,本文給大家介紹Nginx location 基本配置及相關(guān)配置文件,感興趣的朋友跟隨小編一起看看吧2021-09-09
Nginx服務(wù)器中為網(wǎng)站或目錄添加認(rèn)證密碼的配置詳解
這篇文章主要介紹了Nginx服務(wù)器中為網(wǎng)站或目錄添加認(rèn)證密碼的配置詳解,使用到了Apache的htpasswd工具,需要的朋友可以參考下2016-01-01
windows下nginx+tomcat配置負(fù)載均衡的方法
這篇文章主要介紹了windows下nginx+tomcat配置負(fù)載均衡的方法,需要的朋友可以參考下2016-09-09
Linux中Nginx的防盜鏈和優(yōu)化的實(shí)現(xiàn)代碼
今天是周末小編在值班哈,很開森,工作使我快樂,本文重點(diǎn)給大家介紹Linux中Nginx的防盜鏈和優(yōu)化問題及實(shí)現(xiàn)代碼,需要的朋友跟隨小編一起看看吧2021-06-06

