Serveur Debian

Adminstration con centré . com !

Serveur Debian

IP-ADRESSE-DE-VOTRE-SERVEUR
votre nom de domaine



Capacités de Charge

La charge supportée par un serveur web dépend de nombreux facteurs, notamment la configuration spécifique, l'optimisation des performances, le type de contenu servi,la nature des requêtes.

2 vCores et 4 Go de RAM

  • Apache : 200 à 300 requêtes par seconde
  • Nginx : 1000 à 1500 requêtes par seconde
  • Nginx en mode proxy inverse : environ 800 à 1200 requêtes par seconde
  • Node.js : environ 1500 à 2000 requêtes par seconde

8 vCores et 16 Go de RAM

  • Apache : 1000 à 1500 requêtes par seconde
  • Nginx : 4000 à 5000 requêtes par seconde
  • Nginx en mode proxy inverse : environ 3000 à 4000 requêtes par seconde
  • Node.js : environ 8000 à 10000 requêtes par seconde

Apache : est idéal pour des configurations complexes et une compatibilité avec de nombreux langages et frameworks.

  • .htaccess #configurer des paramètres de serveur web de manière granulaire au niveau du répertoire
  • Apache utilise une architecture modulaire chargés dynamiquement , le traitement CGI, la réécriture d'URL
  • Apache gère très bien les scripts Perl, Python, et autres langages via CGI.
  • De nombreuses applications web et frameworks sont conçus avec une compatibilité spécifique pour Apache.

Nginx : est parfait pour servir du contenu statique à haute performance et comme proxy inverse

  • .htaccess n'a pas la même flexibilité dans les configurations
  • Les modules ne sont pas dynamiques et doivent être compilés dans le noyau Nginx
  • Meilleure performance que Apache pour les requêtes statiques et en tant que proxy inverse.

Node.js : est optimal pour les applications en temps réel et les opérations I/O intensives.

  • Événements non bloquants Node.js utilise un modèle basé sur les événements et non bloquant, ce qui le rend très performant pour les applications en temps réel.
  • Node.js peut servir des requêtes HTTP sans avoir besoin d'un serveur web externe comme Apache ou Nginx.
  • Un vaste écosystème de modules disponibles via NPM (Node Package Manager) pour ajouter des fonctionnalités.
  • Très bonne scalabilité pour les applications I/O intensives.

APACHE

                  +------------------+
                  |  Utilisateurs    |
                  +---------+--------+
                            |
                            v                            
                  +------------------+
                  |  Apache + PHP    |
                  +---------+--------+

Installe

sudo apt install apache2 -y



sudo systemctl status apache2

sudo apt install php libapache2-mod-php php-mysql php-xml php-mbstring php-curl -y
sudo apt install  php8.2-fpm
sudo apt install libapache2-mod-fcgid -y

sudo apachectl -S # permet de récupérer des informations sur la configuration d'Apache.

http://votre_ip/
echo "<?php phpinfo();?>" | sudo tee /var/www/html/info.php


sudo apachectl configtest
sudo systemctl status apache2
sudo systemctl restart apache2 
sudo systemctl stop apache2
sudo systemctl start apache2
tail -f /var/log/apache2/error.log
    

Supprimer le maximum d'informations dans les en-têtes HTML renvoyées par Apache,

sudo nano /etc/apache2/conf-available/security.conf
ServerTokens Prod  # Masquer la version d'Apache
ServerSignature Off # Supprimer les informations de signature d'Apache
Header unset X-Powered-By  # Supprimer l'en-tête 'X-Powered-By' pour PHP (et autres langages si nécessaire)  

VirtualHost et FastCGI : directive PHP

sudo nano /etc/apache2/sites-available/000-default.conf
sudo a2enmod fcgid
sudo a2enmod rewrite
sudo a2enmod proxy
sudo a2enmod proxy_fcgi
sudo a2enmod ssl

<FilesMatch \.php$>
   SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost/"  # active FastCGI
</FilesMatch>
 


Configurer son nom de domaine : nomdedomaine.fr

sudo mkdir -p /var/www/nomdedomaine.fr/public
sudo chown -R www-data:www-data /var/www/nomdedomaine.fr
sudo chmod -R 755 /var/www/nomdedomaine.fr


sudo nano /etc/apache2/sites-available/nomdedomaine.fr.conf
<VirtualHost *:80>
    ServerAdmin webmaster@nomdedomaine.fr
    ServerName nomdedomaine.fr
    ServerAlias www.nomdedomaine.fr

    DocumentRoot /var/www/nomdedomaine.fr
    #DocumentRoot /var/www/nomdedomaine.fr/public

    <Directory /var/www/nomdedomaine.fr>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/nomdedomaine.fr-error.log
    CustomLog ${APACHE_LOG_DIR}/nomdedomaine.fr-access.log combined

    # Pass PHP scripts to FastCGI process manager
    <FilesMatch \.php$>
        # SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost/"
        # SetHandler application/x-httpd-php
    </FilesMatch>
</VirtualHost>




  sudo certbot certificates
  sudo certbot delete --cert-name nomdedomaine.fr
  sudo apt install certbot python3-certbot-apache -y
  sudo certbot --apache -d groupemaes.fr -d www.groupemaes.fr
  sudo certbot delete --cert-name nomdedomaine.fr


sudo a2ensite nomdedomaine.fr.conf
sudo a2dissite 000-default.conf  # Optionnel dé-actite 
sudo a2enmod rewrite
sudo systemctl restart apache2

echo "<?php echo('Bonjour nomdedomaine.fr');?>" | sudo tee /var/www/nomdedomaine.fr/index.php
echo "<?php phpinfo();?>" | sudo tee /var/www/nomdedomaine.fr/info.php

http://www.nomdedomaine.fr/
http://nomdedomaine.fr/info.php

sudo a2dissite nomdedomaine.fr.conf


sudo nano /etc/apache2/sites-available/nomdedomaine.fr.conf
<VirtualHost *:80>
    ServerAdmin webmaster@nomdedomaine.fr
    ServerName nomdedomaine.fr
    ServerAlias www.nomdedomaine.fr

    DocumentRoot /var/www/nomdedomaine.fr/public

    <Directory /var/www/nomdedomaine.fr/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/nomdedomaine.fr-error.log
    CustomLog ${APACHE_LOG_DIR}/nomdedomaine.fr-access.log combined

    # RewriteEngine on
    # RewriteCond %{SERVER_NAME} =nomdedomaine.fr [OR]
    # RewriteCond %{SERVER_NAME} =www.nomdedomaine.fr
    # RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin webmaster@nomdedomaine.fr
    ServerName nomdedomaine.fr
    ServerAlias www.nomdedomaine.fr

    DocumentRoot /var/www/nomdedomaine.fr

    <Directory /var/www/nomdedomaine.fr>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/nomdedomaine.fr-error.log
    CustomLog ${APACHE_LOG_DIR}/nomdedomaine.fr-access.log combined

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/nomdedomaine.fr/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/nomdedomaine.fr/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf

    <FilesMatch \.php$>
        SetHandler application/x-httpd-php
    </FilesMatch>
</VirtualHost>


    


Suppréssion

sudo systemctl stop apache2
sudo apt-get purge apache2 apache2-utils apache2-bin apache2.2-common -y
sudo rm -rf /etc/apache2
sudo rm -rf /var/www/html
sudo rm -rf /var/log/apache2
sudo apt-get autoremove -y

NGNIX

                  +------------------+
                  |  Utilisateurs    |
                  +---------+--------+
                            |
                            v                            
                  +------------------+
                  |  Nginx + PHP     |
                  +---------+--------+

Installe

sudo apt install nginx -y
sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-xml php8.2-mbstring php8.2-curl -y

sudo nginx -t
sudo systemctl status nginx
sudo systemctl status php8.2-fpm
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl stop nginx


Installer le module Nginx dans Webmin :
Allez dans "Webmin Configuration / Webmin Modules / Instale : Module tiers de https://www.justindhoffman.com/sites/justindhoffman.com/files/nginx-0.10.wbm_.gz

Configurer son nom de domaine : nomdedomaine.fr

sudo mkdir -p /var/www/nomdedomaine.fr
sudo chown -R www-data:www-data /var/www/nomdedomaine.fr
sudo chmod -R 755 /var/www/nomdedomaine.fr  

sudo nano /etc/nginx/sites-available/nomdedomaine.fr
server {
    listen 80;
    server_name nomdedomaine.fr www.nomdedomaine.fr;

    root /var/www/nomdedomaine.fr;
    index index.html index.htm index.php;

    access_log /var/log/nginx/nomdedomaine.fr.access.log;
    error_log /var/log/nginx/nomdedomaine.fr.error.log;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}
    



sudo ln -s /etc/nginx/sites-available/nomdedomaine.fr /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

echo "<?php echo('Bonjour nomdedomaine.fr');?>" | sudo tee /var/www/nomdedomaine.fr/index.php
echo "<?php phpinfo();?>" | sudo tee /var/www/nomdedomaine.fr/info.php

http://www.nomdedomaine.fr/
http://nomdedomaine.fr/info.php



    

sudo apt install certbot python3-certbot-nginx                      
sudo certbot --nginx -d nomdedomaine.fr -d www.nomdedomaine.fr
    

certbot va installer la certification et modifier le fichier

    cat /etc/nginx/sites-available/nomdedomaine.fr
    server {
    server_name nomdedomaine.fr www.nomdedomaine.fr;

    root /var/www/nomdedomaine.fr;
    index index.html index.htm index.php;

    access_log /var/log/nginx/nomdedomaine.fr.access.log;
    error_log /var/log/nginx/nomdedomaine.fr.error.log;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/nomdedomaine.fr/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/nomdedomaine.fr/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
    if ($host = www.nomdedomaine.fr) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    if ($host = nomdedomaine.fr) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    server_name nomdedomaine.fr www.nomdedomaine.fr;
    return 404; # managed by Certbot
}



    


sudo certbot certonly --nginx -d nomdedomaine.fr -d www.nomdedomaine.fr
sudo tail -f/var/log/letsencrypt/letsencrypt.log
sudo certbot certificates
sudo certbot delete --cert-name nomdedomaine.fr
sudo certbot renew
sudo certbot install --cert-name nomdedomaine.fr -d www.nomdedomaine.fr

    


Suppréssion NGNIX

sudo systemctl stop nginx
sudo apt-get purge nginx nginx-common nginx-full -y
sudo rm -rf /etc/nginx
sudo rm -rf /var/log/nginx
sudo rm -rf /var/www/html
sudo apt-get autoremove -y
sudo apt-get autoclean
sudo systemctl status nginx

FastCGI Process Manager

Fonctionnalités et Utilisations de php8.2-fpm : Performance Améliorée :

Gestion des processus : php-fpm gère un pool de travailleurs PHP, réduisant ainsi le coût de démarrage de nouveaux processus PHP. Cela permet de traiter les requêtes plus rapidement. Caching d'Opcode : Il peut être configuré pour utiliser des extensions comme OPcache pour mettre en cache le code PHP compilé, réduisant ainsi le temps de traitement des scripts.

  • Performance :
    • Gestion des processus : gère un pool de travailleurs PHP, réduisant ainsi le coût de démarrage de nouveaux processus PHP. Cela permet de traiter les requêtes plus rapidement.
    • Gestion des processus : gère un pool de travailleurs PHP, réduisant ainsi le coût de démarrage de nouveaux processus PHP. Cela permet de traiter les requêtes plus rapidement.
  • Flexible :
    • Caching d'Opcode : Il peut être configuré pour utiliser des extensions comme OPcache pour mettre en cache le code PHP compilé, réduisant ainsi le temps de traitement des scripts.
    • Pools de Processus : Vous pouvez configurer plusieurs pools de processus avec des paramètres différents pour chaque pool (nombre de processus enfants, utilisateurs, groupes, etc.), ce qui permet de répondre aux besoins spécifiques de différentes applications sur le même serveur.
    • Paramètres Fins : offre une grande flexibilité dans la configuration des limites de mémoire, des temps d'exécution, des tailles de téléchargement, etc.
  • Gestion de la Charge :
    • Redémarrage Automatique : En cas de défaillance d'un processus, php-fpm peut automatiquement redémarrer le processus défaillant sans perturber le service.
    • Gestion de la Charge : php-fpm peut gérer un grand nombre de requêtes simultanées en équilibrant la charge entre les processus enfants.
  • Sécurité :
    • Isolation des Applications : En utilisant des pools de processus distincts pour différentes applications, il est possible d'améliorer la sécurité en isolant les environnements d'exécution.
    • Limitation des Ressources : Vous pouvez définir des limites strictes sur les ressources consommées par chaque processus, réduisant ainsi les risques d'épuisement des ressources du serveur.
  • Intégration avec les Serveurs Web :
    • Nginx : php-fpm est couramment utilisé avec Nginx, un serveur web léger et performant, pour fournir une solution de stack web hautement performante.
    • Apache : Il peut également être utilisé avec Apache via le module mod_proxy_fcgi pour gérer les requêtes PHP de manière plus efficace que le module mod_php.

Pour Apache avec mod_proxy_fcgi :

<VirtualHost *:80>
    ServerName nomdedomaine.fr

    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost/"
    </FilesMatch>
</VirtualHost>

Pour Nginx

  server {
    listen 80;
    server_name nomdedomaine.fr;
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }
}


Installer PHP

Modifiez le fichier de configuration de PHP (php.ini). Sur la plupart des systèmes, ce fichier se trouve dans /etc/php/8.2/apache2/ ou /etc/php/8.2/fpm/, en fonction de la version de PHP et du serveur web que vous utilisez.

sudo apt install php libapache2-mod-php php-mysql php-cli php-curl php-json php-mbstring php-xml php-zip -y

#Configuration de PHP
cd /etc/php/8.2/apache2/
cd /etc/php/8.2/fpm/
echo "" | sudo tee phpinfo.php
upload_max_filesize = 16M
post_max_size = 16M
memory_limit = 128M
max_execution_time = 300
max_input_time = 300
                              

Application Firewall ModSecurity libmodsecurity (WAF)

Un Web Application Firewall (WAF) est une solution de sécurité qui protège les applications web en surveillant et filtrant le trafic HTTP. Une des solutions populaires et open source pour un WAF est ModSecurity, qui peut être utilisé avec Nginx.
projecthoneypot


sudo apt installer libapache2-mod-security2
sudo a2enmod sécurité2
sudo systemctl restart apache2   


sudo nano /etc/apache2/mods-enabled/security2.conf
    InclureFacultatif /etc/modsecurity/*.conf # vérifier la ligne
/////////////////////////////////////////////

sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
sudo nano /etc/modsecurity/modsecurity.conf
  SecRuleEngine DetectionOnly #--> Remplacez-le par : SecRuleEngine On
  SecAuditLogParts ABDEFHIJZ  #--> Remplacez-le par : SecAuditLogParts ABCEFHJKZ
sudo systemctl restart apache2

/////////////////////////////////////////////

# Installez l'ensemble de règles de base OWASP (CRS)
cd ~
wget https://github.com/coreruleset/coreruleset/archive/v3.3.0.tar.gz
tar xvf v3.3.0.tar.gz
sudo mkdir /etc/apache2/modsecurity-crs/
sudo mv coreruleset-3.3.0/ /etc/apache2/modsecurity-crs/
cd /etc/apache2/modsecurity-crs/coreruleset-3.3.0/
sudo cp crs-setup.conf.example crs-setup.conf
sudo nano /etc/apache2/mods-enabled/security2.conf
    InclureFacultatif /usr/share/modsecurity-crs/*.load
    #--> Remplacez-le par 
    IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/crs-setup.conf 
    IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/rules/*.conf
<IfModule security2_module>
        # Default Debian dir for modsecurity's persistent data
        SecDataDir /var/cache/modsecurity

        # Include all the *.conf files in /etc/modsecurity.
        # Keeping your local configuration in that directory
        # will allow for an easy upgrade of THIS file and
        # make your life easier
        IncludeOptional /etc/modsecurity/*.conf

        # Include OWASP ModSecurity CRS rules if installed
        #IncludeOptional /usr/share/modsecurity-crs/*.load

        IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/crs-setup.conf
        IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-3.3.0/rules/*.conf
</IfModule>

sudo apache2ctl -t
sudo systemctl restart apache2
/////////////////////////////////////////////
Installe de 
cd ~
curl -O https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
cd csf
sudo ./install.sh





Pour Apache

<VirtualHost *:80>
    ServerAdmin webmaster@nomdedomaine.fr
    ServerName nomdedomaine.fr
    ServerAlias www.nomdedomaine.fr

    DocumentRoot /var/www/nomdedomaine.fr/public

    <Directory /var/www/nomdedomaine.fr/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/nomdedomaine.fr-error.log
    CustomLog ${APACHE_LOG_DIR}/nomdedomaine.fr-access.log combined

    # Include ModSecurity configuration
    Include /etc/modsecurity/modsecurity.conf

    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin webmaster@nomdedomaine.fr
    ServerName nomdedomaine.fr
    ServerAlias www.nomdedomaine.fr

    DocumentRoot /var/www/nomdedomaine.fr/public

    <Directory /var/www/nomdedomaine.fr/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/nomdedomaine.fr-error.log
    CustomLog ${APACHE_LOG_DIR}/nomdedomaine.fr-access.log combined

    # Include ModSecurity configuration
    Include /etc/modsecurity/modsecurity.conf

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/nomdedomaine.fr/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/nomdedomaine.fr/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>  
</pre>

Pour Nginx

  
sudo nano /etc/nginx/sites-available/nomdedomaine.fr


sudo nginx -t
sudo systemctl restart nginx


server {
    listen 80;
    server_name mysite.com www.mysite.com;

    include /etc/nginx/modsecurity.conf;


    }


Nginx en mode proxy inverse

Le principe de fonctionnement de Nginx en mode proxy inverse (reverse proxy) consiste à placer Nginx devant un ou plusieurs serveurs backend (comme des serveurs d'application, bases de données, ou autres services) pour gérer et distribuer les requêtes entrantes.

                  +------------------+    #     +------------------+
                  |  Utilisateurs    |    # --->|       CDN        | 
                  +---------+--------+    #     +---------+--------+
                            |
                            v
                  +------------------------------------------------+
                  |   Nginx (Reverse Proxy) port 80 - 443          |
                  +---------------+--------------------------------+
                                  | 
         +------------------------+-----# -------+-------------------------------+
         |  port 8080                            |                               |
         v                                       v                               v
+-------------------+                   +-------------------+           +-------------------+
| Apache (Backend)  |                   | Serveur Backend 2 |           | Serveur Backend 3 |
| WAF (ModSecurity) |                   |                   |           |                   |
| - PHP 8.2-FPM     |                   |                   |           |                   |
+-------------------+                   +-------------------+           +-------------------+

  • Réception des Requêtes Clients : Il reçoit les requêtes HTTP ou HTTPS des clients (navigateurs web, applications mobiles, etc.).
  • Distribution des Requêtes : Agit comme un intermédiaire entre les clients et les serveurs backend, redirigeant les requêtes vers le serveur approprié en fonction de règles de configuration définies (comme l'équilibrage de charge, les règles de routage, etc.).
  • Équilibrage de Charge : Distribu les requêtes entrantes de manière équilibrée entre plusieurs serveurs backend, améliorant ainsi la performance et la disponibilité du service.
  • Mise en Cache : Met en cache les réponses des serveurs backend, réduisant ainsi la charge sur ces serveurs et améliorant les temps de réponse pour les clients.
  • Sécurité : Implémenter diverses mesures de sécurité, telles que la terminaison SSL/TLS, le filtrage des requêtes, et la protection contre les attaques DDoS.
  • Réécriture et Redirection d'URL : Réécrire et rediriger les URL des requêtes entrantes pour répondre à des besoins spécifiques, comme les réécritures de SEO ou les migrations d'URL.
  • Compression : compresse les réponses des serveurs backend avant de les envoyer aux clients, réduisant ainsi la bande passante utilisée.

A voir ? Shared Content Delivery Network (CDN)

Un Content Delivery Network (CDN) partagé, également connu sous le nom de "Shared CDN", est un réseau de serveurs distribués géographiquement qui travaillent ensemble pour fournir rapidement du contenu Internet aux utilisateurs finaux. Le terme "partagé" fait référence à l'utilisation de l'infrastructure CDN par plusieurs clients, ce qui permet de réduire les coûts et d'optimiser les ressources.

Les serveurs CDN sont répartis dans le monde entier. Cela permet de placer le contenu plus près des utilisateurs finaux, réduisant ainsi la latence et améliorant les temps de chargement.

Le CDN met en cache le contenu statique (images, vidéos, fichiers CSS/JS, etc.) sur ses serveurs périphériques (Edge Servers). Lorsqu'un utilisateur demande ce contenu, il est servi à partir du serveur le plus proche plutôt que du serveur d'origine.

Fournisseur de CDN : Cloudflare, Akamai, Amazon CloudFront, et Fastly

return 301 https://nomdedomaine.fr$request_uri;


Installation

sudo apt install curl software-properties-common gnupg2 -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install apache2 libapache2-mod-security2 -y
sudo a2enmod proxy proxy_fcgi setenvif


#sudo a2enmod proxy                #nécessaire pour les fonctionnalités de proxy inverse.
#sudo a2enmod proxy_fcgi           #Permet à Apache de communiquer avec les applications backend via le protocole FastCGI.
#sudo a2enmod proxy_http           #Permet à Apache de fonctionner en tant que proxy HTTP. Nécessaire pour rediriger les requêtes HTTP vers des serveurs backend.
#sudo a2enmod proxy_balancer       #configure des stratégies d'équilibrage de charge entre plusieurs serveurs backend
#sudo a2enmod lbmethod_byrequests  #Méthode d'équilibrage de charge qui distribue les requêtes aux serveurs backend en fonction du nombre de requêtes




sudo nano /etc/nginx/sites-available/nomdedomaine.fr
server {
    listen 80;
    server_name nomdedomaine.fr www.nomdedomaine.fr;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    error_page 497 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name nomdedomaine.fr www.nomdedomaine.fr;

    ssl_certificate /etc/letsencrypt/live/nomdedomaine.fr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/nomdedomaine.fr/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
sudo ln -s /etc/nginx/sites-available/nomdedomaine.fr /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl status nginx


sudo cp /etc/apache2/ports.conf /etc/apache2/ports.conf.copy sudo nano /etc/apache2/ports.conf Listen 8080 server_name ns330012.ip-37-187-118.eu 37.187.118.125; # Restreindre l'accès à Nginx uniquement Require ip 127.0.0.1 Require ip ::1 Require ip 37.187.118.125> sudo nano /etc/apache2/sites-available/nomdedomaine.fr.conf <VirtualHost *:8080> ServerAdmin webmaster@nomdedomaine.fr ServerName nomdedomaine.fr ServerAlias www.nomdedomaine.fr DocumentRoot /var/www/nomdedomaine.fr/public <Directory /var/www/nomdedomaine.fr/public> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/nomdedomaine.fr-error.log CustomLog ${APACHE_LOG_DIR}/nomdedomaine.fr-access.log combined <Location /> Require ip 127.0.0.1 Require ip [::1] Require ip votre_ip </Location> # Include ModSecurity configuration Include /etc/modsecurity/modsecurity.conf <FilesMatch \.php$> # SetHandler application/x-httpd-php # PHP intégré SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost/" #PHP-FPM avec proxy_fcgi FastCGI configurations de pools </FilesMatch> </VirtualHost> sudo systemctl status apache2 sudo systemctl restart apache2
authorized_submit_users = !
    sshusername, !ftpusername, 
    !user1, !user2, 
    vmail, root, www-data, asterisk
<apache_dir>$ make
<apache_dir>$ make install