À procura de um programa personalizado de rede de fornecimento de conteúdo de PHP (CDN) para o meu servidor

REF: https://en.wikipedia.org/wiki/Content_delivery_network

uma rede de distribuição de conteúdo ou rede de distribuição de conteúdo é um sistema de computadores onde o nosso site é armazenado para que os seus dados (imagens/vídeos) possam ser servidos a partir de vários locais. No entanto, eu não quero usar nenhum serviço de CDN pago/não pago online, mas gostaria de configurar CDN no meu próprio servidor de alta velocidade. Eu fiz muito google, mas não vejo nenhum script CDN que eu possa instalar no meu servidor.

Eu sou à procura de tal script que pode suportar alto nível de cache-controle.

Pode partilhar, por favor, se conhece algum bom programa de CDN desenvolvido no PHP?

Author: Michael Irigoyen, 2013-06-05

1 answers

Isto não é feito em PHP, isto é feito em Apache.

O que eu fiz no meu próprio servidor (provavelmente é o que você quer) é configurar um sub-domínio cookieless para servir conteúdo, e permitir cache e GZip. As configurações Apache a seguir estão todas localizadas em A.arquivo htaccess no diretório do site.

# GZIP compression
SetOutputFilter DEFLATE

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(eot|ico|gif|jpe?g|php|png|ttf|svg|woff)$ no-gzip dont-vary

# Fonts on a cookieless subdomain
<FilesMatch "\.(eot|ttf|svg|woff)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>


# Cookieless Static Content
<FilesMatch "\.(css|eot|ico|gif|jpe?g|js|png|ttf|svg|woff)$">
Header unset Cookie
Header unset Set-Cookie
</FilesMatch>

# Caching
ExpiresActive On
ExpiresDefault A0

<FilesMatch "\.(eot|ico|gif|jpe?g|png|ttf|svg|woff)$">
# 2 year caching for images and stuff
ExpiresDefault A31536000
Header append Cache-Control "public"
</FilesMatch>

<FilesMatch "\.(css|js)$">
# 1 week caching for styles and scripts
ExpiresDefault A604800
Header append Cache-Control "public"
</FilesMatch>

#Other Header Manipulation
FileETag MTime Size
Header unset X-Powered-By
AddDefaultCharset UTF-8
DefaultLanguage en-US

Desde que não se importe de cache e GZip no seu domínio primário (o que não deve fazer), basta ligar para o seu conteúdo sem cozinha usando os seus cookieless designados sub-domínio, e Apache cuida do resto.

Actualizar

Adicionei algumas coisas sobre as quais aprendi desde que postei esta resposta, tais como:

  • permitir que qualquer domínio se ligue às fontes para que possam ser servidas sem cookies.
  • definir o cabeçalho do ETAG, dado que deve ser definido .
  • alguns outros campos de cabeçalho que não são maus de incluir/se livrar.
No entanto, há uma última preocupação de segurança a ter em mente se estiver a usar HTTPS, e isso é violação . Para se proteger contra esta técnica de descodificação, poderá remover a compressão do gzip de qualquer página que mostre conteúdo dinâmico (o conteúdo estático do gzip como o HTML estático, o CSS ou o JS ainda está ok). Para evitar comprimir um determinado tipo de arquivo (como o PHP), adicione-o à Diretiva SetEnvIfNoCase perto do início desta configuração.

Em alternativa, poderá manter a compressão activa e usar o método de cifra GCM, Dado que a família de ataques de violação só funciona no CBC método de cifra. Por Mais que eu odeie ser "aquele cara", o manual é realmente a melhor referência para isso se você quiser começar a configurar tais coisas. É um tópico bastante complicado e o manual faz um bom trabalho de explicar o básico.

 7
Author: , 2018-05-24 12:34:56