Introduction

NGINX peut faire office de serveur web mais également de reverse proxy. Nous allons ici l’utiliser pour relayer les requêtes vers le serveur Apache httpd.

Apache http

Ci-dessous un fichier de configuration minimal permettant de servir les fichiers statiques produits par Hugo et installés dans le répertoire /srv/www/hugo/public.

Listen         127.0.0.1:8080
ServerRoot     "/usr/pkg"

LoadModule     authz_core_module               lib/httpd/mod_authz_core.so
LoadModule     mpm_event_module                lib/httpd/mod_mpm_event.so
LoadModule     dir_module                      lib/httpd/mod_dir.so
LoadModule     log_config_module               lib/httpd/mod_log_config.so
LoadModule     unixd_module                    lib/httpd/mod_unixd.so

DocumentRoot   "/srv/www/hugo/public"
ErrorLog       "/var/log/www/httpd-error.log"
LogLevel       info

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

<IfModule log_config_module>
  LogFormat    "%h %l %u %t \"%r\" %>s %b"     common
  CustomLog    "/var/log/www/httpd-access.log" common
</IfModule>

<IfModule unixd_module>
  User         httpd
  Group        www 
</IfModule>

<Directory "/">
  Require      all                             granted
</Directory>

NGINX

Ci-dessous un fichier de configuration minimal permettant de relayer les requêtes HTTP/HTTPS reçu à destination de l’hôte www.

error_log                      syslog:server=unix:/var/run/log,nohostname;
user                           nginx www;

events {
  worker_connections           1024;
}

http {
  access_log                   syslog:server=unix:/var/run/log,nohostname;

  server {
    listen                     80; 
    listen                     443;
    listen                     [::]:80;
    listen                     [::]:443;
    server_name                triaxx.io;
    ssl_certificate            /etc/openssl/certs/TriaxxIo.pem;
    ssl_certificate_key        /etc/openssl/private/TriaxxIo.pem;
    return             301     $scheme://www.$server_name$request_uri;
  }

  server {
    listen                     80; 
    listen                     [::]:80;
    server_name                www.triaxx.io;
    return             301     https://www.$server_name$request_uri;
  }

  server {
    listen                     443             ssl;
    listen                     [::]:443        ssl;
    server_name                www.triaxx.io;
    ssl_certificate            /etc/openssl/certs/TriaxxIo.pem;
    ssl_certificate_key        /etc/openssl/private/TriaxxIo.pem;
    ssl_protocols              TLSv1.2 TLSv1.3;

    location / { 
      proxy_pass               http://localhost:8080/;
    }   
  }
}