Proxy nginx
Lorsque Webman doit fournir un accès externe directement, il est recommandé d'ajouter un proxy nginx devant Webman, ce qui présente les avantages suivants.
- Les ressources statiques sont traitées par nginx, permettant à Webman de se concentrer sur le traitement de la logique métier.
- Permet à plusieurs Webman de partager les ports 80 et 443, en différenciant les différents sites via des noms de domaine, permettant ainsi le déploiement de plusieurs sites sur un seul serveur.
- Permet la coexistence de php-fpm et de l'architecture Webman.
- Le proxy nginx pour SSL rend l'implémentation de HTTPS plus simple et plus efficace.
- Permet de filtrer strictement certaines requêtes non légales de l'extérieur.
Exemple de proxy nginx
upstream webman {
server 127.0.0.1:8787;
keepalive 10240;
}
server {
server_name nom_du_domaine;
listen 80;
access_log off;
# Attention, ce doit être le répertoire public de Webman, pas le répertoire racine de Webman
root /your/webman/public;
location ^~ / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Connection "";
if (!-e $request_filename){
proxy_pass http://webman;
}
}
# Refuser l'accès à tous les fichiers se terminant par .php
location ~ \.php$ {
return 404;
}
# Autoriser l'accès au répertoire .well-known
location ~ ^/\.well-known/ {
allow all;
}
# Refuser l'accès à tous les fichiers ou répertoires commençant par .
location ~ /\. {
return 404;
}
}
En général, les développeurs n'ont besoin de configurer que server_name
et root
en valeurs réelles, les autres champs ne nécessitent pas de configuration.
Attention
Il est particulièrement important que l'optionroot
soit configurée sur le répertoire public de Webman, ne la configurez surtout pas directement sur le répertoire Webman, sinon tous vos fichiers pourraient être téléchargés par des utilisateurs externes, y compris des fichiers sensibles comme la configuration de la base de données.