Configuration d'un serveur Nginx avec sous-sites et accès HTTPS

Exigences du site Web

  1. Accès principal via www.openlab.com affichant le message "welcome to openlab"
  2. Trois sous-sections :
    • Informations étudiants : www.openlab.com/student
    • Ressources pédagogiques : www.openlab.com/data
    • Paiements en ligne : www.openlab.com/money
  3. Contraintes supplémentaires :
    • Toutes les requêtes HTTP doivent être redirigées vers HTTPS
    • La section étudiante n'est accessible qu'aux utilisateurs "song" et "tian"

Étape 1 : Installation et configuraton initiale

mount /dev/cdrom /media
dnf install -y nginx
setenforce 0
systemctl stop firewalld
systemctl enable --now nginx

Étape 2 : Configurasion du site principal

Modifier la configuration Nginx :

# /etc/nginx/conf.d/openlab.conf
server {
    listen 80;
    server_name www.openlab.com;
    root /srv/www/openlab;
    index index.html;
}

Créer le contenu :

mkdir -p /srv/www/openlab
echo "welcome to openlab" > /srv/www/openlab/index.html

Configurer la résolution DNS locale :

echo "192.168.1.100 www.openlab.com" >> /etc/hosts

Étape 3 : Déploiement des sous-sites

mkdir -p /srv/www/openlab/{students,resources,payments}

cat <<EOF > /srv/www/openlab/students/index.html
<h1>Portail des étudiants</h1>
EOF

cat <<EOF > /srv/www/openlab/resources/index.html
<h1>Documents pédagogiques</h1>
EOF

cat <<EOF > /srv/www/openlab/payments/index.html
<h1>Service de paiement</h1>
EOF

Étape 4 : Authentification pour la section étudiante

dnf install -y httpd-tools
htpasswd -c /etc/nginx/.htpasswd song
htpasswd /etc/nginx/.htpasswd tian

Ajouter dans la configuration :

location /students {
    auth_basic "Zone restreinte";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

Étape 5 : Activation du HTTPS

Générer un certificat auto-signé :

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/nginx/ssl/openlab.key \
  -out /etc/nginx/ssl/openlab.crt \
  -subj "/CN=www.openlab.com"

Configurer le serveur HTTPS et la redirection :

server {
    listen 443 ssl http2;
    server_name www.openlab.com;
    
    ssl_certificate /etc/nginx/ssl/openlab.crt;
    ssl_certificate_key /etc/nginx/ssl/openlab.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    
    # ... autres paramètres SSL ...
}

server {
    listen 80;
    server_name www.openlab.com;
    return 301 https://$host$request_uri;
}

Étiquettes: nginx ssl HTTPS authentication htpasswd

Publié le 12 juillet à 04h26