Mise en place du module pagespeed

Préparation Installer le paquet nginx-extra Créer le dossier /var/ngx_pagespeed_cache pour y monter un tmpfs, 256Mo sont sufisant pour une instance wordpress mkdir /var/ngx_pagespeed_cache echo 'tmpfs /var/ngx_pagespeed_cache tmpfs defaults,size=256M 0 0' >> /etc/fstab mount -a Configuration pour votre “server” : # enable ngx_pagespeed pagespeed on; pagespeed FileCachePath /var/ngx_pagespeed_cache; # Ensure requests for pagespeed optimized resources go to the pagespeed handler # and no extraneous headers get set. location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; } location ~ "^/ngx_pagespeed_/" { } location ~ "^/ngx_pagespeed_beacon$" { } location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; } location /ngx_pagespeed_global_statistics { allow 127.0.0.1; deny all; } location /ngx_pagespeed_message { allow 127. [Voir plus]

Nginx – Ajouter/Supprimer les www pour tous ces domaines

Pour ajouter les www. a tous ces domaines :

server {
    listen 80;
    server_name ~^(?!www\.)(?<domain>.+)$;
    return 301 $scheme://www.$domain$request_uri;
}

Au contraire, pour les supprimer

server {
    listen 80;
    server_name ~^(?www\.)(?<domain>.+)$;
    return 301 $scheme://$domain$request_uri;
}

Monitorer Nginx avec Zabbix

Configuration de Nginx Le serveur nginx doit donner sont status en local via l’url http://localhost:61123/nginx_status Pour cela, il faut ajouter le “ server ” suivant qui sera disponible uniquement via localhost sur le port 61123: server { listen 127.0.0.1:61123; server_name localhost; location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } } Configuration de l’agent Zabbix Dans la configuration de l’agent Zabbix ajouter les paramètres suivant pour remonter au serveur les nouvelles clefs UserParameter=nginx.active[*],curl -s http://localhost:61123/nginx_status | awk '/^Active/ {print $NF} UserParameter=nginx.reading[*],curl -s http://localhost:61123/nginx_status | awk '/Reading/ {print $$2} UserParameter=nginx.writing[*],curl -s http://localhost:61123/nginx_status | awk '/Writing/ {print $$4} UserParameter=nginx. [Voir plus]

Offloading SSL avec Nginx

Configuration de base pour effectuer de l’offloading SSL avec Nginx.

Les header défini avec proxy_set_header pourront être utilisé au niveau du backend pour effectuer, par exemple, des redirection http vers https

server {
  listen   443 ssl; ## listen for ipv4
  server_name domaine.ltd;
  ssl                     on;
  ssl_prefer_server_ciphers on;
  ssl_protocols           SSLv3 TLSv1 TLSv1.1 TLSv1.2; #libssl > 1.0
  ssl_ciphers             RC4:HIGH:!MD5:!ADH:+DH; #HIGH:!ADH:!MD5:@STRENGTH;
  ssl_session_cache       shared:TLSSL:16m;
  ssl_session_timeout     10m;
  ssl_certificate         /etc/nginx/domaine.ltd.crt;
  ssl_certificate_key     /etc/nginx/domaine.ltd.key;

  location / {
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-By $server_addr:$server_port;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass http://backend;
  }

}

Article complémentaire : Redirection http vers https derrière un reverse proxy

Centralisation des logs Nginx avec Rsyslog

Configuration de rsyslog coté nginx Créer le fichier de configuration /etc/rsyslog.d/nginx.conf pour y placer $ModLoad imfile $InputFileName /var/log/nginx/access.log $InputFileTag nginx_access_log: $InputFileStateFile nginx_access_log $InputFileSeverity info $InputFileFacility user $InputRunFileMonitor $InputFileName /var/log/nginx/error.log $InputFileTag nginx_error_log: $InputFileStateFile nginx_error_log $InputFileSeverity info $InputFileFacility user $InputRunFileMonitor # lit le fichier de log toutes les deux secondes $InputFilePollingInterval 2 #envoie les logs en tcp a 192.1.2.3 port 514 if $syslogtag == 'nginx_access_log:' then @@(z9)192.1.2.3:514 if $syslogtag == 'nginx_error_log:' then @@(z9)192.1.2.3:514 #ne log pas ce qui est taggé nginx (pour ne pas logger en double) :syslogtag, contains, "nginx" ~ Configuration de rsyslog coté serveur de log Créer de la même manière le fichier /etc/rsyslog. [Voir plus]

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;