Embora o blog agora esteja colocado no host Alibaba Cloud Hong Kong CN2 VPS, a Telecom usa a linha CN2, então a velocidade de acesso será mais rápida (mas também recebi feedback de amigos da Telecom de que o acesso é lento (⊙﹏⊙)) . No entanto, a China Unicom e os usuários móveis terão acesso mais lento, especialmente durante o período de pico noturno. Muitos amigos disseram que não conseguem abri-lo.

A julgar pelo anúncio oficial, o Alibaba Cloud Hong Kong CN2 VPS realmente encontrou problemas com linhas China Unicom ou nós de linhas de telecomunicações, resultando em problemas de acesso a toda a sala de informática. É claro que o Alibaba Cloud deixará naturalmente o "pote" para as operadoras. Há algum tempo, os usuários da China Unicom tiveram que ignorar o Japão ou outros lugares para acessar o Alibaba Cloud Hong Kong VPS.

Quando mudei do Kdatacenter Korea VPS para o Alibaba Cloud Hong Kong VPS, em primeiro lugar, senti que o Alibaba Cloud Hong Kong VPS era realmente barato e atraente o suficiente, em segundo lugar, senti que a linha CN2 poderia ser boa, pelo menos muito mais rápida que a americana; linha. Agora parece que, exceto para usuários de telecomunicações, o acesso será mais tranquilo, enquanto usuários de outras operadoras terão problemas de vez em quando.

Para resolver este problema, o natural a pensar é acelerar o CDN para o site. Naturalmente, o VPS doméstico não pode ser usado sem um número BA, então encontrei um método VPS coreano que usa proxy reverso Nginx para transferir as solicitações de acesso dos usuários da China Mobile e China Unicom para o servidor CDN, o que pode maximizar a velocidade de acesso ao site.

Aceleração CDN autoconstruída - ligação reversa Nginx, aceleração de cache, atualização automática de cache e obtenção de IP real

Este artigo explicará em detalhes como construir um CDN para o site acelerar e armazenar em cache as páginas e arquivos correspondentes. Ao mesmo tempo, quando o conteúdo do site for atualizado, use ngx_cache_purge para atualizar imediatamente o cache no servidor CDN. resolver o problema de aquisição do servidor de origem durante o uso. O problema do IP real do usuário. Mais ferramentas de aceleração de CDN e construção de sites incluem:

  1. Junte-se ao Cloudflare Partner para fornecer o serviço de aceleração CloudFlare CDN gratuitamente - sem necessidade de modificar o NS para oferecer suporte a SSL
  2. Use o Fikker para construir seu próprio CDN - suporta HTTPS, cache de páginas, monitoramento em tempo real, estatísticas de tráfego e prevenção de ataques CC
  3. Duas excelentes ferramentas de monitoramento de tráfego de rede de servidores: Ntopng e Munin - poderosas e intuitivas

PS: Atualizado em 27 de abril de 2018. Atualmente, o Youpaiyun CDN é usado para imagens e arquivos estáticos, como JS e CSS, no site. Artigo de revisão: Tutorial de aplicação e uso acelerado do Youpaiyun CDN-1 Espelhamento de chave, CDN dinâmico estático e SSL grátis.

PS: Atualizado em 6 de março de 2018, Se você não quiser construir um CDN sozinho, você pode tentar um serviço de aceleração de CDN de terceiros. O familiar CloudFlare é uma escolha muito boa: Dez coisas. você pode não saber sobre a dica de aceleração de CDN gratuita do CloudFlare - SSLDOSCache.

1. Instale o Nginx

Você pode instalar e configurar manualmente o Nginx ou usar o pacote de instalação de um clique do LNMP para instalar o Nginx. Os mais úteis são: Oneinstack e LNMP. Se não quiser usá-lo, você pode tentar o pacote de instalação Nginx de um clique do xiaoz (aplicável ao Centos 7 e Deebian 8).

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

O Linux instala o Nginx com um clique e ativa o CDN (proxy reverso). Basta executar o seguinte comando para instalá-lo.

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

2. Configuração relacionada ao Nginx

Aqui eu uso wzfou.com para aceleração como exemplo. Há um VPS de origem e um VPS usado como proxy reverso CDN. Os IPs correspondentes dos dois são os seguintes:

1. Site de origem: 192.168.1.100, que é onde os dados do site wzfou.com são realmente armazenados.

2. CDN:192.168.1.101  Nó CDN, se houver vários nós CDN, o método de operação é o mesmo

Primeiro modifique os hosts no nó CDN. O objetivo é informar ao nó CDN onde obter os dados do site, ou seja, o endereço de retorno à origem. Modifique da seguinte forma:


vi /etc/hosts
192.168.1.100	www.wzfou.com

Em seguida, crie o arquivo de configuração nginx wzfou.com.conf no nó 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

Adicione o seguinte conteúdo a wzfou.com.conf. Ajuste o diretório de cache/tempo de cache de acordo com a situação real. O significado de cada parâmetro será explicado em detalhes posteriormente.

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

As instruções relevantes são as seguintes:

1. /data/wwwroot/caches/wzfou.com: é o diretório de cache

2. levels: Especifique que o espaço de cache tem dois níveis de diretórios hash, o diretório do primeiro nível tem 1 letra e o segundo nível tem 2 letras.

3. keys_zone=wzfou:50m: Dê um nome ao espaço de cache, aqui ele é denominado "wzfou", e os 50m seguintes referem-se ao espaço de cache de memória.

4. inactive=30m: Se o recurso não for acessado em 30 minutos, ele será excluído.

5. max_size=50m: refere-se ao tamanho do cache do disco rígido de 50 MB

6. proxy_cache_valid: Especifique o tempo de cache do código de status Escreva o código de status na frente e o tempo de cache atrás.

Por fim, recarregue o nginx para que a configuração tenha efeito. Se você estiver usando oneinstack, digite o comando diretamente: service nginx reload Se for o script de um clique xiaoz, digite: /usr/local. /nginx/sbin/nginx -s recarregar .  

3. Proxy reverso do site HTTPS

O que é compartilhado acima são as configurações de proxy reverso Nginx para sites HTTP. Se você deseja reverter sites HTTPS de proxy, você precisa primeiro solicitar um certificado SSL para seu nome de domínio e, em seguida, você só precisa definir. Para obter um bom caminho de certificado SSL, consulte a seguinte configuração para ajustá-lo:

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 limpa o cache de atualização

A limpeza do cache Nginx requer a ajuda do módulo ngx_cache_purge. Você pode inserir o comando nginx -V para visualizar os módulos compilados. Se não houver ngx_cache_purge, significa que o módulo é. não instalado e você precisa recompilar o Nginx.

4.1  Configurar ngx_cache_purge

Adicione a seguinte configuração à seção do servidor e recarregue o Nginx. Mantenha o seguinte wzfou consistente com o valor definido por keys_zone, caso contrário, o nginx não será iniciado.

location ~ /purge(/.*) {
allow all;
proxy_cache_purge wzfou $proxy_host$1$is_args$args;
error_page 405 =200 /purge$1;
}

Se quiser limpar o cache, basta adicionar o parâmetro purge, como https://www.xiaoz.me/purge/xxx.png. cache, você será solicitado como segue. Se não houver cache, 404 será retornado. Se 404 for retornado, não importa o que aconteça, a configuração pode não ser bem-sucedida.

4.2  WordPress atualiza automaticamente o cache

Para blogs WordPress, se a página for armazenada em cache após a ativação do CDN e não puder ser exibida imediatamente após o usuário enviar um comentário, você poderá usar a interface ngx_cache_purge de solicitação assíncrona do Ajax para limpar o cache da página quando o usuário enviar um comentário. Basta adicionar o seguinte js a 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>

A seguir está a configuração completa do Xiaoz Blog CDN, apenas para referência. Você precisa substituir Keys_zone, caminho SSL, nome de domínio, etc.:

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. Faça um bom trabalho na resolução de nomes de domínio DNS

Usando as funções de resolução de DNS, como linhas, regiões e clientes fornecidas pela resolução de nomes de domínio DNS, podemos resolver diferentes usuários de banda larga, usuários provinciais e usuários clientes para nós CDN.

Use o teste da ferramenta para webmasters para ver se usuários de diferentes locais em wzfou.com acessam diferentes nós CDN, o que significa que nossa implantação de aceleração de CDN foi bem-sucedida.

6. Incapaz de obter IP real após ativar o CDN

Se você for um usuário do WordPress, ao ativar a aceleração Nginx CDN, você descobrirá que os IPs de comentários do usuário obtidos pelo backend do WP se tornaram nós CDN. Resolver esse problema também é muito simples. - No arquivo config.php:

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

7. Resumo

O Nginx vincula nomes de domínio reversamente para construir um servidor de aceleração CDN com baixo custo e instalação e configuração simples. É especialmente adequado para amigos que não desejam usar um CDN pago. Na verdade, muitos profissionais de aceleração CDN também usam proxy reverso Nginx para acelerar. acesso ao site. Pode-se dizer que o Nginx CDN é um método de aceleração muito eficaz.

Há dois problemas que precisam ser observados ao usar a aceleração Nginx CDN. Um é o problema de atualização do cache. Se sua página da web for atualizada com frequência, você pode definir um intervalo de tempo de atualização. Podemos usar PHP ou Nginx, etc. para obter diretamente o endereço IP real.

Deixe uma resposta