Mặc dù hiện tại blog được đặt trên server VPS Alibaba Cloud Hong Kong CN2 nhưng Telecom sử dụng đường CN2 nên tốc độ truy cập sẽ nhanh hơn (tuy nhiên mình cũng nhận được phản hồi của bạn bè Telecom là truy cập chậm (⊙﹏⊙)). Tuy nhiên, China Unicom và người dùng di động sẽ truy cập chậm hơn, đặc biệt là trong thời gian cao điểm buổi tối. Nhiều bạn cho biết họ không thể mở được.
Đánh giá theo thông báo chính thức, VPS Alibaba Cloud Hong Kong CN2 quả thực đã gặp sự cố với đường dây China Unicom hoặc nút đường dây viễn thông, dẫn đến vấn đề truy cập vào toàn bộ phòng máy tính. Tất nhiên, Alibaba Cloud đương nhiên sẽ để lại “cái nồi” cho các nhà khai thác. Cách đây một thời gian, người dùng China Unicom phải bỏ qua Nhật Bản hoặc các nơi khác để truy cập vào VPS của Alibaba Cloud Hong Kong.
Khi tôi chuyển từ VPS Kdatacenter Korea sang VPS Alibaba Cloud Hong Kong, thứ nhất, tôi cảm thấy VPS Alibaba Cloud Hong Kong quả thực rẻ và đủ hấp dẫn, thứ hai, tôi cảm thấy dòng CN2 có thể tốt, ít nhất là nhanh hơn nhiều so với của Mỹ; đường kẻ. Giờ đây, có vẻ như ngoại trừ người dùng viễn thông, việc truy cập sẽ mượt mà hơn, trong khi người dùng của các nhà khai thác khác đôi khi sẽ gặp sự cố.
Để giải quyết vấn đề này, điều đương nhiên phải nghĩ đến là tăng tốc CDN cho website. Đương nhiên, VPS trong nước không thể sử dụng nếu không có số BA nên tôi đã tìm ra phương pháp VPS Hàn Quốc sử dụng proxy ngược Nginx để chuyển yêu cầu truy cập của người dùng China Mobile và China Unicom sang máy chủ CDN, có thể tối đa hóa tốc độ truy cập trang web.
Bài viết này sẽ giải thích chi tiết cách xây dựng CDN cho website để tăng tốc và cache các trang, file tương ứng, đồng thời khi cập nhật nội dung website hãy sử dụng ngx_cache_purge để kịp thời cập nhật cache trên CDN server. giải quyết vấn đề thu thập máy chủ nguồn trong quá trình sử dụng. Vấn đề về IP thực của người dùng. Các công cụ xây dựng trang web và tăng tốc CDN khác bao gồm:
- Tham gia Cloudflare Partner để cung cấp dịch vụ tăng tốc CDN CloudFlare miễn phí - không cần sửa đổi NS để hỗ trợ SSL
- Sử dụng Fikker để xây dựng CDN của riêng bạn - hỗ trợ HTTPS, bộ nhớ đệm trang, giám sát thời gian thực, thống kê lưu lượng truy cập và ngăn chặn tấn công CC
- Hai công cụ giám sát lưu lượng mạng máy chủ tuyệt vời: Ntopng và Munin - mạnh mẽ và trực quan
PS: Cập nhật ngày 27 tháng 4 năm 2018. Hiện tại, Youpaiyun CDN được sử dụng cho hình ảnh và các tệp tĩnh như JS và CSS trên trang web Bài viết đánh giá: Hướng dẫn sử dụng và ứng dụng tăng tốc Youpaiyun CDN-1 Key mirroring, CDN động tĩnh và SSL miễn phí.
PS: Cập nhật ngày 6 tháng 3 năm 2018, Nếu không muốn tự mình xây dựng CDN, bạn có thể thử dịch vụ tăng tốc CDN của bên thứ ba CloudFlare quen thuộc là một lựa chọn rất tốt: Mười điều. Có thể bạn chưa biết về mẹo tăng tốc CDN miễn phí của CloudFlare-SSLDDOSCache.
1. Cài đặt Nginx
Bạn có thể cài đặt và định cấu hình Nginx theo cách thủ công hoặc sử dụng gói cài đặt bằng một cú nhấp chuột LNMP để cài đặt Nginx. Những gói hữu ích hơn là: Oneinstack và LNMP. Nếu không muốn sử dụng, bạn có thể dùng thử gói cài đặt Nginx chỉ bằng một cú nhấp chuột của xiaz (áp dụng cho Centos 7 và Deebian 8).
- https://GitHub.com/hellonow/nginx-cdn
Linux cài đặt Nginx chỉ bằng một cú nhấp chuột và bật CDN (proxy ngược). Chỉ cần thực hiện lệnh sau để cài đặt nó.
wget https://raw.githubusercontent.com/helloxz/nginx-cdn/master/nginx.sh
chmod +x nginx.sh && ./nginx.sh
2. Cấu hình liên quan đến Nginx
Ở đây tôi sử dụng wzfou.com để tăng tốc làm ví dụ. Có một VPS gốc và một VPS được sử dụng làm proxy ngược CDN. IP tương ứng của cả hai như sau:
1. Trang nguồn: 192.168.1.100, đây là nơi lưu trữ dữ liệu trang web wzfou.com.
2. CDN:192.168.1.101 Nút CDN, nếu có nhiều nút CDN thì cách thức hoạt động giống nhau
Đầu tiên sửa đổi các Máy chủ trên nút CDN. Mục đích là để cho nút CDN biết nơi lấy dữ liệu trang web, tức là địa chỉ quay về nguồn.
vi /etc/hosts
192.168.1.100 www.wzfou.com
Sau đó tạo tệp cấu hình nginx wzfou.com.conf
trên nút CDN
#创建缓存目录
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
Thêm nội dung sau vào wzfou.com.conf
. Vui lòng điều chỉnh thư mục bộ đệm/thời gian bộ đệm theo tình hình thực tế. Ý nghĩa của từng tham số sẽ được giải thích chi tiết sau.
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;
}
}
Các hướng dẫn có liên quan như sau:
1.
/data/wwwroot/caches/wzfou.com
: là thư mục bộ đệm2.
levels
: Chỉ định rằng không gian bộ nhớ đệm có hai cấp độ thư mục băm, thư mục cấp độ đầu tiên là 1 chữ cái và cấp độ thứ hai là 2 chữ cái.3.
keys_zone=wzfou:50m
: Đặt tên cho không gian bộ nhớ đệm, ở đây nó được đặt tên là "wzfou" và 50m sau đây đề cập đến không gian bộ nhớ đệm.4.
inactive=30m
: Nếu tài nguyên không được truy cập trong vòng 30 phút, tài nguyên sẽ bị xóa.5.
max_size=50m
: nghĩa là kích thước bộ đệm của đĩa cứng là 50MB6.
proxy_cache_valid
: Chỉ định thời gian lưu trữ mã trạng thái ở phía trước và thời gian lưu trữ ở phía sau.
Cuối cùng, tải lại nginx để cấu hình có hiệu lực. Nếu bạn đang sử dụng oneinstack, hãy nhập lệnh trực tiếp: service nginx loading
. Nếu đó là tập lệnh một cú nhấp chuột xiaoz, hãy nhập: /usr/local. /nginx/sbin/nginx -s tải lại
.
3. Proxy đảo ngược trang web HTTPS
Những gì được chia sẻ ở trên là cài đặt proxy ngược Nginx cho các trang web HTTP. Nếu bạn muốn đảo ngược các trang web HTTPS proxy, trước tiên bạn cần đăng ký chứng chỉ SSL cho tên miền của mình, sau đó bạn chỉ cần đặt. nó lên. Để có đường dẫn chứng chỉ SSL tốt, vui lòng tham khảo cấu hình sau để điều chỉnh:
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 xóa bộ đệm cập nhật
Việc xóa bộ đệm Nginx cần có sự trợ giúp của mô-đun ngx_cache_purge. Bạn có thể nhập lệnh nginx -V
để xem các mô-đun đã biên dịch. Nếu không có ngx_cache_purge
, điều đó có nghĩa là mô-đun đó đã được biên dịch. chưa được cài đặt và bạn cần biên dịch lại Nginx.
4.1 Định cấu hình ngx_cache_purge
Thêm cấu hình sau vào phần máy chủ và tải lại Nginx. Vui lòng giữ wzfou
sau phù hợp với giá trị được xác định bởi keys_zone
, nếu không nginx sẽ không khởi động.
location ~ /purge(/.*) {
allow all;
proxy_cache_purge wzfou $proxy_host$1$is_args$args;
error_page 405 =200 /purge$1;
}
Nếu bạn muốn xóa bộ đệm, chỉ cần thêm tham số purge
, chẳng hạn như https://www.xiaoz.me/purge/xxx.png
. cache, bạn sẽ được nhắc như sau. Nếu không có bộ đệm, 404 sẽ được trả về. Nếu 404 được trả về dù thế nào đi nữa, cấu hình có thể không thành công.
4.2 WordPress tự động làm mới bộ đệm
Đối với blog WordPress, nếu trang được lưu vào bộ đệm sau khi bật CDN và không thể hiển thị ngay sau khi người dùng gửi nhận xét, bạn có thể sử dụng giao diện ngx_cache_purge yêu cầu không đồng bộ Ajax để xóa bộ nhớ đệm của trang khi người dùng gửi nhận xét. Chỉ cần thêm js sau vào 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>
Sau đây là cấu hình đầy đủ của Xiaoz Blog CDN, bạn chỉ cần thay thế Keys_zone, đường dẫn SSL, tên miền, v.v.:
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. Làm tốt công việc phân giải tên miền DNS
Bằng cách sử dụng các chức năng phân giải DNS như đường, vùng và máy khách do độ phân giải tên miền DNS cung cấp, chúng tôi có thể phân giải những người dùng băng thông rộng, người dùng tỉnh và người dùng khách khác nhau thành các nút CDN.
Sử dụng công cụ quản trị trang web để kiểm tra xem người dùng từ những nơi khác nhau trên wzfou.com có truy cập vào các nút CDN khác nhau hay không, điều đó có nghĩa là việc triển khai tăng tốc CDN của chúng tôi đã thành công.
6. Không thể lấy IP thực sau khi kích hoạt CDN
Nếu bạn là người dùng WordPress, khi kích hoạt khả năng tăng tốc Nginx CDN, bạn sẽ thấy rằng các IP nhận xét của người dùng mà phần phụ trợ WP thu được đã trở thành các nút CDN. Việc giải quyết vấn đề này cũng rất đơn giản. Bạn chỉ cần thêm đoạn mã sau vào wp. - Trong file config.php:
if (isset($_SERVER['HTTP_X_REAL_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP']; }
7. Tóm tắt
Nginx liên kết ngược các tên miền để xây dựng máy chủ tăng tốc CDN với chi phí thấp, cài đặt và cấu hình đơn giản, đặc biệt phù hợp với những bạn không muốn sử dụng CDN trả phí. Trên thực tế, nhiều máy tăng tốc CDN chuyên nghiệp cũng sử dụng proxy ngược Nginx để tăng tốc. truy cập website Có thể nói Nginx CDN là một phương pháp tăng tốc rất hiệu quả.
Có hai vấn đề cần chú ý khi sử dụng tính năng tăng tốc Nginx CDN. Một là vấn đề cập nhật bộ đệm. Nếu trang web của bạn được cập nhật thường xuyên, bạn có thể đặt khoảng thời gian cập nhật. Thứ hai là vấn đề IP thực của người dùng. . Chúng ta có thể sử dụng PHP Hoặc Nginx, v.v. để lấy trực tiếp địa chỉ IP thực.