Table des matières

Nginx coma reverse proxy

La tòca d'un reverse proxy es de distribuir las requèstas HTTP e HTTPS a mantuns servidors web. Amb aquela foncionalitat es possible lo balanç de carga (load balancing) sià a torn de rotle (round robin) o al azard e mai de possibilitats autras .

Exemples sul malhum

Dins los exemples donats sul malhum Korben info e dins la documentacion de Nginx Nginx reverse proxy, vesèm pas qu'un exemple ont un site unic es partejat en doas partidas.

server {
        listen   80;
        server_name  korben.info;
        access_log  /var/log/korben.access.log;
        error_log  /var/log/korben.nginx_error.log debug;
        location / {
                proxy_pass         http://127.0.0.1:8080/;
        }

        location /phpmyadmin {
                proxy_pass         http://127.0.0.1:8080/phpmyadmin;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root   /var/www/nginx-default;
}

Nòstre cas es diferent

Çò que volèm es aver un portal que posquèsse distribuir la carga o las requèstas demest mantuns sites dins cadun sa machina virtuala o sa gabia / jail. Se tròba que Nginx es son prètzfach, ansin per cada machina virtuala avèm un servidor web, apache2.4 o flask o SolR o whatever e son contengut completament dedicat e decoblat.
Doncas farem un blòc server per cada site, entresenharem lo(s) blòc(s) location amb la clausa proxy_pass seguida del parametre upstream (backend_wiki o backend_calelh).

#user  nobody;
worker_processes  1;

# ...
#error_log  /var/log/nginx/error.log;
#

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

# ...

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    include conf.d/*.conf;
    include Includes/*;
}

Puèi avèm creat un repertòri conf.d ont metèm los aliasses per los servidors

conf.d/proxy.conf

upstream backend_wiki{
    server 192.168.0.25;
}

upstream backend_calelh{
    server 192.168.0.22:5000;
}

En fin avèm creat dos repertòris Includes e Excludes. Puèi botam un fichièr de l'extension .conf dins lo repertòri Includes per cada servidor web. Per enebir un servidor, sufís de botar lo fichièr .conf dins lo repertòri Excludes a la mòda de BSD e de tornar enregar nginx .

Includes/wiki.conf

server {
        listen       80;
        server_name  wiki wiki.macarel.net;

        access_log  /var/log/nginx/wiki.access.log;
        error_log  /var/log/nginx/wiki.error.log;

        location / {
                proxy_pass http://backend_wiki;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/local/www/nginx-dist;
        }
}

Includes/calelh.conf

server {
        listen       80;
        server_name  calelh calelh.macarel.net;

        access_log  /var/log/nginx/calelh.access.log;
        error_log  /var/log/nginx/calelh.error.log;

        location /{
                proxy_pass http://backend_calelh;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/local/www/nginx-dist;
        }
}

De doblidar pas

#service nginx restart
easy peasy lemon squeezy