search
top
Vous naviguez actuellement sur:Software

Appliquer une configuration Varnish a chaud

Il est possible de recharger/changer de configuration Varnish a chaud. Pour cela utilisez varnishadm

  • Lister les VLC chargé
  • boot : configuration initial
  • 201204121052 : configuration précédemment chargé manuellement
varnish> vcl.list
200
available       8 boot
active          2 201204121052
  • Charge run.vcl et le nome 201204121059
varnish> vcl.load 201204121059 /usr/local/etc/varnish/run.vcl
200
VCL compiled.
  • applique la configuration se nomant 201204121059
varnish> vcl.use 201204121059
200 
  • Déconnection
varnish> quit
500
Closing CLI connection

Charger votre site dans le cache Varnish grace a son sitemap.xml

Cela peux se faire avec uniquement wget et egrep mais cela ne cachera pas les image, javascript css et autre fichiers. Cette solution n’utilisera pas d’espace dique.

wget --quiet http://domain.ltd/sitemap.xml -O - | egrep -o "http://domain\.ltd[^<]+" | wget --spider -nv -i -

N’oubliez pas de remplacer domain.ltd par votre domain :)

Pour tous crawler, vous pouvez utiliser le script ci-dessous, celui ci mettra en cache toutes les pages, image, css et js

#!/usr/bin/env sh

BIN_DEPS='wget awk grep cut'

# CHECKS

if [ "$1" = "" ]; then
    echo "Usage : $0 domain.ltd"
    exit 1
else
    DOMAIN=$1
fi

for BIN in $BIN_DEPS; do
    which $BIN 1>/dev/null 2>&1
    if [ $? -ne 0 ]; then
        echo "Error: Required file could not be found: $BIN"
        exit 1
    fi
done

URLS=$(wget -q http://$DOMAIN/sitemap.xml -O - | awk -F'<loc>' '{print $2}' | awk -F '</loc>' '{ print $1 }' | grep -v ^$)

for URL in $URLS; do
    PAGE=$(wget -q -O - $URL | grep -o -E 'href="([^"#]+)"' | cut -d'"' -f2 )
    SRC=$(wget -q -O - $URL | grep -o -E 'src="([^"#]+)"' | cut -d'"' -f2 )
    for LINK in $PAGE $SRC; do
        if echo $LINK | grep $DOMAIN | grep -vi feed 1>/dev/null ; then
            wget --domains=$DOMAIN -O/dev/null -nv $LINK
        fi
    done
done

Conserver l’IP du client derrière un reverse proxy

Lorsque Nginx est placé derrière un reverse proxy, celui ci avec une configuration de base logera l’ip des visiteur avec celle du reverse proxy et non avec l’ip des visiteurs.

Cela peut poser des problemes par exemple dans le cas ou vous utilisez Akismet comme antispam pour vos commentaires.

Pour cela, dans varnish ajouter apres

sub vcl_recv {

la ligne

set req.http.X-Forwarded-For = client.ip;

puis dans la configuration Nginx, dans la configuration http, ajouter

    set_real_ip_from 127.0.0.1;
    real_ip_header X-Forwarded-For;

Sécuriser la configuration Nginx pour WordPress

Configuration de base pour le CMS WordPress

server {
    listen      192.168.1.1:80 default_server;
    server_name  _;
  • listen: Configuration pour le vhost par defaut (les acces a des server_name inconu par Nginx arriveront dans ce vhost)
  • server_name: _ indique le vhost par defaut, mettez vos ou votre server_name si vous voulez pas faire un vhost par defaut.
    root        /var/www/domaine.ltd/www;
    index       index.php;

N’oublier pas de modifier le « root »

    location = /favicon.ico     {   allow all;  log_not_found off;  access_log off; }
    location = /robots.txt      {   allow all;  log_not_found off;  access_log off; }

On desactive les log et on ne log pas les not found pour ces deux fichiers

    location ~ /\.              {   deny all;   log_not_found off;  access_log off; }
    location ~ wp-config.php    {   deny all;   log_not_found off;  access_log off; }

bloque l’acces aux fichiers commencant par un point et au fichier de conf (non negociable ! :) )

    location ~ ^/wp-content {
        deny all;
        location ~ .(xml|css|jpe?g|png|gif|js)$ {
            allow all;
        }
    }

Autorise l’acces uniquement aux extensions correspondant a la regex dans l’integralitée du dossier wp-content, si vous voulez laisser vos psd et autre fichiers source, ils sont protegé.

    location / {
        if (!-e $request_filename) {
            rewrite ^(.+)$ /index.php?q=$1 last;
        }
    }

Renvoie tous sur l’index, cela permet d’utiliser le format d’url de votre choix.

    location ~ \.php$ {
        fastcgi_pass   php5;
        fastcgi_index  index.php;
        include fastcgi_params;
        fastcgi_ignore_client_abort     off;
    }

cette partie permet d’executer le php, a adapter suivant votre configuration

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
    }

Cela permet de mettre en caches les fichiers static.

}

Postfix – Spécifier une IP différente en fonction du domaine de l’émetteur

sender_dependent_default_transport_maps va permettre, en fonction de l’émetteur de l’email sur votre serveur de spécifier une IP précise.

echo "/@domain-src-1\.ltd$/ domain_src_1:"  > /usr/local/etc/postfix/outgoingips.regexp
echo "/@domain-src-2\.ltd$/ domain_src_2:" >> /usr/local/etc/postfix/outgoingips.regexp
echo "/@domain-src-3\.ltd$/ domain_src_3:" >> /usr/local/etc/postfix/outgoingips.regexp

Création des routes, ajouter dans master.cf les « entrées » suivante

domain_src_1   unix -       -       n       -       -       smtp
	   -o smtp_bind_address=192.168.0.1
	   -o smtp_helo_name=domain-src-1.ltd
	   -o syslog_name=postfix-domain_src_1
domain_src_2   unix -       -       n       -       -       smtp
	   -o smtp_bind_address=192.168.0.2
	   -o smtp_helo_name=domain-src-2.ltd
	   -o syslog_name=postfix-domain_src_2
domain_src_3   unix -       -       n       -       -       smtp
	   -o smtp_bind_address=192.168.0.3
	   -o smtp_helo_name=domain-src-3.ltd
	   -o syslog_name=postfix-domain_src_3

Puis ajouter dans main.cf :

sender_dependent_default_transport_maps = regexp:/usr/local/etc/postfix/outgoingips.regexp

« Articles précédents Articles suivants »

top