Annonce ToutSurTout

Bienvenue sur toutsurtout.biz

Déjà 15 ans !

Radio TST

Si vous souhaitez participer vous aussi aux discussions sur le forum, il faut vous inscrire ou vous identifier.

Le Thème TST Automne est maintenant en place.

Les inscriptions sont actuellement OUVERTES.

Message 1 Discussion postée le 12-07-2013 à 13:32:33

Philippe
Avatar de Philippe


Titre: Banni
Avancement: Niveau 3
Date d'inscription: 26-09-2009
Messages: 3 660

Nginx et CloudFlare

http://www.zupmage.eu/i/SlvtC3hwbt.png

Pour lancer un site à haute performance, une solution peu onéreuse et très efficace existe: combiner le CDN gratuit CloudFlare et le serveur web Nginx (prononcer "engine-x"). On aura ainsi l'amélioration de performances notable de CloudFlare qui prendra toutes les requêtes en front (grosses économies de BP et de requêtes) et Nginx qui servira CloudFlare de façon plus efficace qu'un Apache ou Lighttpd.

On aura donc besoin d'un dédié (dans notre cas Debian, mais rien ne devrait changer pour des plateformes Linux) et d'un compte CloudFlare gratuit.

Sur le dédié, on aura installé: Nginx (bien sûr) mais aussi php5-fpm (pour PHP sur Nginx). En gros:

apt-get install nginx

service nginx start

apt-get install php5-fpm

service php5-fpm start

Je vous laisse le soin de configurer/optimiser le tout, de bons articles existent (gzip, etc).

On va plutôt s'intéresser à adapter notre serveur web au CDN.

Pour cela, on va modifier nginx.conf (souvent dans /etc/nginx/nginx.conf)

On commence par ajouter les lignes suivantes:

# IP CloudFlare
    set_real_ip_from    204.93.240.0/24;
    set_real_ip_from    204.93.177.0/24;
    set_real_ip_from    199.27.128.0/21;
    set_real_ip_from    173.245.48.0/20;
    set_real_ip_from    103.21.244.0/22;
    set_real_ip_from    103.22.200.0/22;
    set_real_ip_from    103.31.4.0/22;
    set_real_ip_from    141.101.64.0/18;
    set_real_ip_from    108.162.192.0/18;
    set_real_ip_from    190.93.240.0/20;
    set_real_ip_from    188.114.96.0/20; 
    set_real_ip_from    197.234.240.0/22;
    set_real_ip_from    198.41.128.0/17;
    set_real_ip_from    162.158.0.0/15;
    set_real_ip_from    2400:cb00::/32;
    set_real_ip_from    2606:4700::/32;
    set_real_ip_from    2803:f800::/32;
    set_real_ip_from    2405:b500::/32;
    set_real_ip_from    2405:8100::/32;
    real_ip_header      CF-Connecting-IP;

Cela nous permettra d'avoir les vraies IP dans les logs, et non celles des serveurs de CloudFlare (puisqu'il n'y a plus qu'eux qui se connecteront au serveur). Source pour les IP de CloudFlare.

Pensez à vérifer que votre version de Nginx a été compilée avec http_realip_module, c'est possible avec la commande

nginx -V

Ensuite, pour éviter les erreurs "Website currently unreachable", on va augmenter la taille des buffers proxy pour Nginx. En gros, on va autoriser aux proxys plus de mémoire (et il faut le faire, puisque ce sont les seuls qui contacteront votre serveur désormais)

# Augmenter taille buffers pour CF
    proxy_buffer_size    128k;
    proxy_buffers     4 256k;
    proxy_busy_buffers_size 256k;
    proxy_temp_file_write_size 256k;

Enfin, si vous ne l'avez pas fait, pensez à allouer à PHP une mémoire suffisante pour que vos applis tournent proprement:

# Augmenter taille buffers pour PHP
    fastcgi_temp_file_write_size 10m;
    fastcgi_busy_buffers_size 512k;
    fastcgi_buffer_size 512k;
    fastcgi_buffers 16 512k;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_intercept_errors on;
    fastcgi_next_upstream error invalid_header timeout http_500;

Bonus: si vous utilisez Fail2ban, comme je vous le recommande, pensez à laisser passer les IP CloudFlare: dans jail.conf, remplacez la ligne ignoreip comme suit

ignoreip = 127.0.0.1/8 204.93.240.0/24 204.93.177.0/24 199.27.128.0/21 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15


https://www.world-lolo.com/images/uploads/image.num1445754529.of.world-lolo.com.jpg
Des stades aux entrées payantes sont pleins de gens qui pensent que ceux qu'ils applaudissent sont trop payés, et les bibliothèques à l'entrée gratuite sont vides des gens qui pensent que les livres sont trop chers ...
 

Message 2 Réponse postée le 12-07-2013 à 18:13:51

Loic
Avatar de Loic


Titre: Administrateur d'élite
Avancement: Niveau 5
Lieu: Avec Solenne
Date d'inscription: 26-09-2009
Messages: 107 780
Site web

Re: Nginx et CloudFlare

Très bon tuto, merci à Adaur.


http://www.toutsurtout.biz/img/UserBarTST.gif
http://www.toutsurtout.biz/img/Sign-Loic.gif
Loic DL un jour, Loic DL toujours ...
 

Message 3 Réponse postée le 12-07-2013 à 18:15:01

Philippe
Avatar de Philippe


Titre: Banni
Avancement: Niveau 3
Date d'inscription: 26-09-2009
Messages: 3 660

Re: Nginx et CloudFlare

Loic a écrit :

Très bon tuto, merci à Adaur.

ou pas


https://www.world-lolo.com/images/uploads/image.num1445754529.of.world-lolo.com.jpg
Des stades aux entrées payantes sont pleins de gens qui pensent que ceux qu'ils applaudissent sont trop payés, et les bibliothèques à l'entrée gratuite sont vides des gens qui pensent que les livres sont trop chers ...
 

Message 4 Réponse postée le 17-07-2013 à 02:08:52

Loic
Avatar de Loic


Titre: Administrateur d'élite
Avancement: Niveau 5
Lieu: Avec Solenne
Date d'inscription: 26-09-2009
Messages: 107 780
Site web

Re: Nginx et CloudFlare

Philippe a écrit :

Loic a écrit :

Très bon tuto, merci à Adaur.

ou pas

"ou pas" si tu le dis par rapport à son auteur qui est Adaur, je ne suis pas d'accord, si par contre tu le dis par rapport à "Très bon tuto" nous sommes d'accord.

Il est bien rédigé mais CloudFlare reste une belle merde. Qu'ils continuent leurs réglages pour leur forum de tarlouzes (il ne sera jamais au point, même en mettant toute leur équipe de bras cassés sur le coup).


http://www.toutsurtout.biz/img/UserBarTST.gif
http://www.toutsurtout.biz/img/Sign-Loic.gif
Loic DL un jour, Loic DL toujours ...