Mettre en place un proxy (Nginx)

Reverse

Admettons que nous disposons d'un serveur frontal qui va répartir les requêtes sur plusieurs serveurs en fonction des ressources demandé par le client.

server {
   listen 80;
   
   root /var/www/html;

   location ~ \.(?:css|js|woff)$ {
      proxy_pass http://192.168.1.11/;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
}

   location ~ \.(?:png|jpeg|jpg|svg|gif)$ {
     proxy_pass http://192.168.1.12/;
     proxy_set_header Host $host;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header X-Forwarded-Proto $scheme;
     proxy_set_header X-Real-IP $remote_addr;
} 

Cache

Admettons que nous avons une machine frontal (192.168.0.192) qui utilise Nginx et une autre machine moins puissance disposant d'Apache (192.168.0.190). La bonne nouvelle est que les modifications à apporté se feront que sur le serveur qui contiendra le contenu statique des pages web, soit le serveur ayant Nginx d'installé.

On se connecte au serveur 192.168.0.192 pour adapter la configuration globale à notre besoin :

 nano /etc/nginx/nginx.conf
http {
  # ...
  proxy_cache_key "$scheme://$host$request_uri";
  proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache:10m inactive=7d max_size=700m;
}

On renseigne quel site Internet aura droit à ce cache :

 nano /etc/nginx/site-enabled/bruno-tatu.com
server {
  location / {
    include proxy_params;
    proxy_pass http://192.168.0.190/;
    proxy_cache cache;
    proxy_cache_valid 12h;
    expires 12h;
    proxy_cache_use_stale error timeout invalid_header updating;
  }
}

Autres directives