हालाँकि ब्लॉग अब अलीबाबा क्लाउड हांगकांग CN2 VPS होस्ट पर रखा गया है, टेलीकॉम CN2 लाइन का उपयोग करता है, इसलिए एक्सेस स्पीड तेज़ होगी (लेकिन मुझे टेलीकॉम के दोस्तों से भी फीडबैक मिला है कि एक्सेस धीमी है (⊙﹏⊙)) . हालाँकि, चाइना यूनिकॉम और मोबाइल उपयोगकर्ताओं के पास धीमी पहुंच होगी, खासकर शाम की व्यस्त अवधि के दौरान कई दोस्तों ने कहा कि वे इसे बिल्कुल भी नहीं खोल सकते।

आधिकारिक घोषणा से देखते हुए, अलीबाबा क्लाउड हांगकांग सीएन2 वीपीएस को वास्तव में चीन यूनिकॉम लाइनों या दूरसंचार लाइन नोड्स के साथ समस्याओं का सामना करना पड़ा है, जिसके परिणामस्वरूप पूरे कंप्यूटर कक्ष तक पहुंच में समस्याएं पैदा हुई हैं। बेशक, अलीबाबा क्लाउड स्वाभाविक रूप से "पॉट" ऑपरेटरों पर छोड़ देगा। कुछ समय पहले, चाइना यूनिकॉम उपयोगकर्ताओं को अलीबाबा क्लाउड हांगकांग वीपीएस तक पहुंचने के लिए जापान या अन्य स्थानों को बायपास करना पड़ता था।

जब मैं केडेटासेंटर कोरिया वीपीएस से अलीबाबा क्लाउड हांगकांग वीपीएस में स्थानांतरित हुआ, तो सबसे पहले, मुझे लगा कि अलीबाबा क्लाउड हांगकांग वीपीएस वास्तव में काफी सस्ता और आकर्षक था, दूसरे, मुझे लगा कि सीएन2 लाइन अच्छी हो सकती है, कम से कम अमेरिकी की तुलना में बहुत तेज; रेखा। अब ऐसा लग रहा है कि टेलीकॉम यूजर्स को छोड़कर बाकी सभी ऑपरेटर्स के यूजर्स को समय-समय पर दिक्कतें होंगी।

इस समस्या को हल करने के लिए, सोचने वाली स्वाभाविक बात वेबसाइट के लिए सीडीएन को तेज करना है। स्वाभाविक रूप से, घरेलू वीपीएस का उपयोग बीए नंबर के बिना नहीं किया जा सकता है, इसलिए मुझे एक कोरियाई वीपीएस विधि मिली जो चाइना मोबाइल और चाइना यूनिकॉम उपयोगकर्ताओं के एक्सेस अनुरोधों को सीडीएन सर्वर पर स्थानांतरित करने के लिए नेग्नेक्स रिवर्स प्रॉक्सी का उपयोग करती है, जो वेबसाइट एक्सेस की गति को अधिकतम कर सकती है।

स्व-निर्मित CDN त्वरण-Nginx रिवर्स बाइंडिंग, कैश त्वरण, स्वचालित रूप से कैश अपडेट करें और वास्तविक IP प्राप्त करें

यह आलेख विस्तार से बताएगा कि संबंधित पृष्ठों और फ़ाइलों को तेज करने और कैश करने के लिए वेबसाइट के लिए सीडीएन कैसे बनाया जाए, साथ ही, जब वेबसाइट की सामग्री अपडेट की जाती है, तो सीडीएन सर्वर पर कैश को तुरंत अपडेट करने के लिए ngx_cache_purge का उपयोग करें। उपयोग के दौरान स्रोत सर्वर अधिग्रहण की समस्या का समाधान करें। अधिक CDN त्वरण और वेबसाइट निर्माण टूल में शामिल हैं:

  1. CloudFlare CDN एक्सेलेरेशन सेवा निःशुल्क प्रदान करने के लिए Cloudflare पार्टनर से जुड़ें - SSL का समर्थन करने के लिए NS को संशोधित करने की आवश्यकता नहीं है
  2. अपना स्वयं का सीडीएन बनाने के लिए फ़िकर का उपयोग करें - HTTPS, पेज कैशिंग, वास्तविक समय की निगरानी, ​​ट्रैफ़िक आँकड़े और CC हमले की रोकथाम का समर्थन करता है
  3. दो उत्कृष्ट सर्वर नेटवर्क ट्रैफ़िक निगरानी उपकरण: Ntopng और मुनिन - शक्तिशाली और सहज

PS: 27 अप्रैल, 2018 को अपडेट किया गया। वर्तमान में, Youpaiyun CDN का उपयोग वेबसाइट पर JS और CSS जैसी छवियों और स्थिर फ़ाइलों के लिए किया जाता है। समीक्षा लेख: Youpaiyun CDN त्वरित एप्लिकेशन और उपयोग ट्यूटोरियल-1 कुंजी मिररिंग। स्थिर गतिशील सीडीएन और मुफ्त एसएसएल।

PS: 6 मार्च 2018 को अपडेट किया गया, यदि आप स्वयं CDN नहीं बनाना चाहते हैं, तो आप तृतीय-पक्ष CDN त्वरण सेवा आज़मा सकते हैं। परिचित CloudFlare एक बहुत अच्छा विकल्प है: दस चीज़ें आप CloudFlare फ्री CDN एक्सेलेरेशन टिप-SSLDDOSCache के बारे में नहीं जानते होंगे।

1. Nginx स्थापित करें

आप Nginx को मैन्युअल रूप से इंस्टॉल और कॉन्फ़िगर कर सकते हैं, या Nginx को इंस्टॉल करने के लिए LNMP वन-क्लिक इंस्टॉलेशन पैकेज का उपयोग कर सकते हैं। अधिक उपयोगी हैं: Oneinstack और LNMP। यदि आप इसका उपयोग नहीं करना चाहते हैं, तो आप xiaoz के एक-क्लिक Nginx इंस्टॉलेशन पैकेज (Centos 7 और Deebian 8 पर लागू) को आज़मा सकते हैं।

  1. https://GitHub.com/hellonow/nginx-cdn

लिनक्स एक क्लिक से Nginx इंस्टॉल करता है और CDN (रिवर्स प्रॉक्सी) चालू करता है। इसे इंस्टॉल करने के लिए बस निम्नलिखित कमांड निष्पादित करें।

wget https://raw.githubusercontent.com/helloxz/nginx-cdn/master/nginx.sh
chmod +x nginx.sh && ./nginx.sh

2. Nginx संबंधित कॉन्फ़िगरेशन

यहां मैं एक उदाहरण के रूप में त्वरण के लिए wzfou.com का उपयोग करता हूं। एक मूल वीपीएस और एक वीपीएस है जिसका उपयोग सीडीएन रिवर्स प्रॉक्सी के रूप में किया जाता है। दोनों के संबंधित आईपी इस प्रकार हैं:

1. स्रोत साइट: 192.168.1.100, जहां wzfou.com वेबसाइट डेटा वास्तव में संग्रहीत है।

2. CDN:192.168.1.101  CDN नोड, यदि कई 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

निम्नलिखित सामग्री को 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. स्तर: निर्दिष्ट करें कि कैश स्थान में हैश निर्देशिकाओं के दो स्तर हैं, पहले स्तर की निर्देशिका 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 पुनः लोड करें ।  

3. HTTPS साइट रिवर्स प्रॉक्सी

ऊपर जो साझा किया गया है वह HTTP साइटों के लिए Nginx रिवर्स प्रॉक्सी सेटिंग्स है। यदि आप प्रॉक्सी HTTPS साइटों को रिवर्स करना चाहते हैं, तो आपको पहले अपने डोमेन नाम के लिए 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 on;


    ssl_stapling on;
    ssl_stapling_verify on;

    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;
}

4. ngx_cache_purge अद्यतन कैश साफ़ करता है

Nginx कैश को साफ करने के लिए ngx_cache_purge मॉड्यूल की मदद की आवश्यकता होती है। आप संकलित मॉड्यूल को देखने के लिए nginx -V कमांड दर्ज कर सकते हैं। यदि कोई ngx_cache_purge नहीं है, तो इसका मतलब है कि मॉड्यूल है। स्थापित नहीं है, और आपको Nginx को पुन: संकलित करने की आवश्यकता है।

4.1  ngx_cache_purge कॉन्फ़िगर करें

सर्वर अनुभाग में निम्नलिखित कॉन्फ़िगरेशन जोड़ें और 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 लौटाया जाता है, तो कॉन्फ़िगरेशन सफल नहीं हो सकता है।

4.2   वर्डप्रेस स्वचालित रूप से कैश को रीफ्रेश करता है

वर्डप्रेस ब्लॉग के लिए, यदि सीडीएन सक्षम होने के बाद पेज कैश किया गया है और उपयोगकर्ता द्वारा टिप्पणी सबमिट करने के तुरंत बाद प्रदर्शित नहीं किया जा सकता है, तो आप उपयोगकर्ता द्वारा टिप्पणी सबमिट करने पर पेज कैश को साफ़ करने के लिए अजाक्स एसिंक्रोनस अनुरोध 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>

केवल संदर्भ के लिए, जिओज़ ब्लॉग सीडीएन का संपूर्ण कॉन्फ़िगरेशन निम्नलिखित है। आपको 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 on;
    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 on;
    ssl_stapling on;
    ssl_stapling_verify on;

    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;
}

5. DNS डोमेन नाम रिज़ॉल्यूशन में अच्छा काम करें

DNS डोमेन नाम रिज़ॉल्यूशन द्वारा प्रदान की गई लाइनों, क्षेत्रों और क्लाइंट जैसे DNS रिज़ॉल्यूशन फ़ंक्शंस का उपयोग करके, हम विभिन्न ब्रॉडबैंड उपयोगकर्ताओं, प्रांतीय उपयोगकर्ताओं और क्लाइंट उपयोगकर्ताओं को CDN नोड्स में हल कर सकते हैं।

यह देखने के लिए वेबमास्टर टूल परीक्षण का उपयोग करें कि wzfou.com पर विभिन्न स्थानों के उपयोगकर्ता विभिन्न CDN नोड्स तक पहुँचते हैं, जिसका अर्थ है कि हमारा CDN त्वरण परिनियोजन सफल है।

6. सीडीएन सक्षम करने के बाद वास्तविक आईपी प्राप्त करने में असमर्थ

यदि आप एक वर्डप्रेस उपयोगकर्ता हैं, जब आप Nginx CDN त्वरण को सक्षम करते हैं, तो आप पाएंगे कि WP बैकएंड द्वारा प्राप्त उपयोगकर्ता टिप्पणी IP CDN नोड्स बन गए हैं। इस समस्या को हल करना भी बहुत सरल है। आपको केवल निम्नलिखित कोड को wp में जोड़ने की आवश्यकता है - config.php फ़ाइल में:

if (isset($_SERVER['HTTP_X_REAL_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
}

7. सारांश

कम लागत और सरल इंस्टॉलेशन और कॉन्फ़िगरेशन के साथ CDN एक्सेलेरेशन सर्वर बनाने के लिए Nginx डोमेन नामों को रिवर्स रूप से बांधता है। यह उन दोस्तों के लिए विशेष रूप से उपयुक्त है जो भुगतान किए गए CDN का उपयोग नहीं करना चाहते हैं। वास्तव में, कई पेशेवर CDN एक्सेलेरेशन तेजी लाने के लिए Nginx रिवर्स प्रॉक्सी का भी उपयोग करते हैं वेबसाइट एक्सेस यह कहा जा सकता है कि Nginx CDN एक बहुत प्रभावी त्वरण विधि है।

Nginx CDN एक्सेलेरेशन का उपयोग करते समय दो मुद्दों पर ध्यान देने की आवश्यकता है: एक है कैश अपडेट समस्या, यदि आपका वेब पेज बार-बार अपडेट होता है, तो आप एक अपडेट समय अंतराल सेट कर सकते हैं हम PHP या Nginx आदि का उपयोग करके सीधे वास्तविक IP पता प्राप्त कर सकते हैं।

उत्तर छोड़ दें