你可以手動安裝配置Nginx,或者使用LNMP一鍵安裝包來安裝Nginx,比較好用的有:Oneinstack、LNMP。
如果您都不想使用,可以試試一鍵Nginx安裝包(適用於新睿雲伺服器:Centos 7、Deebian 8系統鏡像)。
1、https://github.com/helloxz/nginx-cdn
Linux一鍵安裝Nginx並開啟CDN(反向代#理),執行下面的命令安裝即可。
wget
https://raw.githubusercontent.com/helloxz/nginx
cdn/master/nginx.sh
chmod +x nginx.sh && ./nginx.sh
這裡我以wzfou.com作加速為例,有一臺源站新睿雲ECS,還有一臺用作CDN反向代#理的新睿雲ECS,它兩者對應的IP如下:
1、源站:192.168.1.100,就是wzfou.com網站數據真實存放的地方
2、CDN:192.168.1.101 CDN節點,如果有多臺操作方法是一樣的
先在CDN節點上修改Hosts,目的就是告知CDN節點從那裡去獲取網站數據,也就是回源地址,修改如下:
vi /etc/hosts
192.168.1.100 www.wzfou.com
然後在CDN節點創建nginx配置文件wzfou.com.conf
#創建緩存目錄
mkdir -p /data/wwwroot/caches/wzfou.com
#設置緩存目錄權限
chown -R www:www /data/wwwroot/caches/wzfou.com
#創建wzfou.com.conf
vi /usr/local/nginx/conf/vhost/wzfou.com.conf
nginx配置文件
在wzfou.com.conf中添加下面的內容,緩存目錄/緩存時間請根據實際情況調整,後面會詳細說明各參數含義。
proxy_cache_path /data/wwwroot/caches/wzfou.com levels=1:2 keys_zone=wzfou:50m inactive=30m max_size=50m;
server {
listen 80;
server_name wzfou.com;
charset utf-8,gbk;
location / {
proxy_set_header Accept-Encoding "";
proxy_pass https://wzfou.com;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache wzfou;
proxy_cache_valid 200 304 30m;
proxy_cache_valid 301 24h;
proxy_cache_valid 500 502 503 504 0s;
proxy_cache_valid any 1s;
proxy_cache_min_uses 1;
expires 12h;
}
}
相關的說明如下:
1、/data/wwwroot/caches/wzfou.com:為緩存目錄
2、levels:指定該緩存空間有兩層hash目錄,第一層目錄為1個字母,第二層為2個字母。
3、keys_zone=wzfou:50m:為緩存空間起個名字,這裡取名為「wzfou」,後面的50m指內存緩存空間 。
4、inactive=30m:如果30分鐘內該資源沒有被訪問則刪除
5、max_size=50m:指硬碟緩存大小為50MB
6、proxy_cache_valid:指定狀態碼緩存時間,前面寫狀態碼,後面寫緩存時間。
最後重載nginx使配置生效,如果使用的oneinstack直接輸入命令:service nginx reload,如果是xiaoz一鍵腳本輸入:/usr/local/nginx/sbin/nginx -s reload。
上面分享的是Http站點的Nginx反向代-理設置,如果你是想反向代-理Https站點,你需要先為你的域名申請好SSL證書,接著你只需要設置好SSL證書路徑,參考如下配置進行調整即可:
proxy_cache_path /data/wwwroot/caches/wzfou.com levels=1:2 keys_zone=wzfou:50m inactive=30m max_size=50m;
server {
listen 443 ssl http2;
ssl_certificate /data/ssl/wzfou/wzfou.com.crt;
ssl_certificate_key /data/ssl/wzfou/wzfou.com.key;
ssl_session_timeout 1d;
ssl_session_cache builtin:1000 shared:SSL:10m;
#ssl_dhparam /data/ssl/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers> ssl_stapling> ssl_stapling_verify> server_name wzfou.com;
access_log /data/wwwlogs/wzfou.com_nginx.log combined;
charset utf-8,gbk;
location / {
proxy_set_header Accept-Encoding "";
proxy_pass https://wzfou.com;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache wzfou;
proxy_cache_valid 200 304 30m;
proxy_cache_valid 301 24h;
proxy_cache_valid 500 502 503 504 0s;
proxy_cache_valid any 1s;
proxy_cache_min_uses 1;
expires 12h;
}
}
server {
listen 80 default_server;
return 301 https://$host$request_uri;
}
清理Nginx緩存需要ngx_cache_purge模塊幫助,可輸入命令nginx -V查看已經編譯的模塊,如果沒有ngx_cache_purge說明模塊沒有安裝,則需要重新編譯一下Nginx。
清理緩存1
4.1配置ngx_cache_purge
在server段內加入下面的配置,並重載Nginx,下面的wzfou請與keys_zone定義的值保持一致,否則nginx將無法啟動。
location ~ /purge(/.*) {
allow all;
proxy_cache_purge wzfou $proxy_host$1$is_args$args;
error_page 405 =200 /purge$1;
}
如果想清理緩存,添加purge參數即可,如https://www.xiaoz.me/purge/xxx.png,如果該文件存在緩存,則會提示如下截圖。若不存在緩存,則返回404,若無論什麼情況均返回404,可能配置沒成功。
清理緩存2
4.2WordPress自動刷新緩存
對於Wordpress博客,如果啟用CDN後頁面被緩存,用戶提交評論後無法馬上顯示出來,可以使用Ajax異步請求ngx_cache_purge接口,當用戶提交評論的時候則清除該頁面緩存。只需要下面的這段js添加到footer.php即可。
<script>
$(document).ready(function(){
$("#submit").click(function(){
var uri = "https://wzfou.com/purge" + window.location.pathname;
$.get(uri,function(data,status){
return true;
});
});
});
</script>
以下是網站使用新睿雲伺服器後進行的CDN完整配置,僅供參考,你需要替換好Keys_zone、SSL路徑、域名等:
proxy_cache_path /data/caches levels=1:2 keys_zone=xiaozcdn:100m inactive=30m max_size=100m;
server
{
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl> ssl_certificate /xxx/www_xiaoz_me.crt;
ssl_certificate_key /xxx/www_xiaoz_me.key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers> ssl_stapling> ssl_stapling_verify> server_name www.xiaoz.me;
charset utf-8,gbk;
#刪除緩存
location ~ /dcache(/.*) {
allow all;
proxy_cache_purge xiaozcdn $proxy_host$1$is_args$args;
error_page 405 =200 /purge$1;
}
location / {
#proxy_set_header Accept-Encoding "";
proxy_pass https://www.xiaoz.me;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache xiaozcdn;
proxy_cache_valid 200 304 30m;
proxy_cache_valid 301 24h;
proxy_cache_valid 500 502 503 504 0s;
proxy_cache_valid any 1s;
#達到第幾次被緩存?
proxy_cache_min_uses 1;
expires 12h;
proxy_cache_key $uri$is_args$args;
}
}
server
{
listen 80;
server_name www.xiaoz.me;
rewrite ^(.*) https://www.xiaoz.me$1 permanent;
}
利用DNS域名解析提供的線路、地域、客戶端等DNS解析功能,我們可以將不同的寬帶用戶、省份用戶還有客戶端用戶解析到CDN節點上了。
自建CDN節點1
使用站長工具測試看到wzfou.com不同地方的用戶訪問到了不同的CDN節點就表示我們的CDN加速部署成功了。
自建CDN節點2
如果是Wordpress用戶,當你啟用了Nginx CDN加速後,你會發現WP後臺獲取到的用戶評論IP都變成了CDN節點的,解決這個問題也很簡單,只需要將下面一段代碼加入到wp-config.php文件中即可:
if (isset($_SERVER['HTTP_X_REAL_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
}
Nginx反向綁定域名搭建CDN加速伺服器低成本安裝配置簡單,特別適合不想使用付費CDN的朋友,事實上很多的專業CDN加速也是採用Nginx反向代#理的方式來加速網站訪問,可以說Nginx CDN是非常有效的加速方法。
自建CDN節點完成
Nginx CDN加速在使用過程中有兩個需要注意的問題,一個是緩存更新問題,如果你的網頁更新頻率的話,可以設置一個更新時間間隔,第二個就是用戶真實IP的問題,我們可以使用PHP或者Nginx等直接獲取真實的IP位址。