Nginx est toujours
plus populaire et est utilisé comme : serveur HTTP bien sûr,
reverse proxy avec ou sans cache, réécriture d’URL, de protéger
et masquer son infrastructure.
Dernièrement, je
l'ai utilisé comme reverse proxy afin de regrouper sur un même
adresse IP plusieurs sites web (plusieurs serveurs et technos : IIS,
Apache, Tomcat) et de préparer une future migration de data center.
Utilisé comme
reverse proxy la config est très simple.
Sous Debian
télécharger la dernière version.
Ajouter à /etc/apt/sources.list
deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx
Puis installer
nginx et openssl
apt-get install nginx openssl
Configurer nginx
/etc/nginx/nginx.conf
user nginx;
worker_processes 2;
error_log /var/log/nginx/error.log
warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include
/etc/nginx/mime.types;
default_type
application/octet-stream;
log_format main '$remote_addr -
$remote_user [$time_local] "$request" '
'$status
$body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log
/var/log/nginx/access.log main;
server_names_hash_bucket_size 64;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
include /etc/nginx/conf.d/*.conf;
include
/etc/nginx/sites-enabled/*;
send_timeout 5m;
}
Créer
le site
dans /etc/nginx/sites-available
server
{
listen
80;
server_name www.nomdusite.com
*.nomdusite.com nomdusite.com;
access_log /var/log/nginx/nomdusite
.com.log;
error_log /var/log/nginx/nomdusite
.com.error.log notice;
location
/ {
proxy_pass http://www.nomdusite.com;
}
}
J'ai
déclarer dans le /etc/hosts l'adresse privée de nomdusite.com
Utiliser SSL
Pour
gérer le reverse proxy avec SSL
Créer une répertoire contenant le certificat SSL.
mkdir -p /etc/nginx/ssl/nomdusite
cd /etc/nginx/ssl/nomdusite
Générer le certificat SSL à faire signer par une autorité de confiance.
openssl req -new -newkey rsa:2048 -nodes -keyout
nomdusite.com.key
-out nomdusite.com.csr
Copier
le contenu du fichier nomdusite.com.csr au près de votre CA, dans
mon cas Godaddy.
Récupérer
le certificat nomdusite.com.crt et déclarer le dans la configuration
de Nginx avec la clé nomdusite.com.key obtenue lors de la génération du fichier
csr.
server
{
listen 443;
ssl on;
server_name www.nomdusite.com *.nomdusite.com nomdusite.com;
ssl_certificate
/etc/nginx/ssl/nomdusite/nomdusite.com.crt;
ssl_certificate_key
/etc/nginx/ssl/nomdusite/nomdusite.key;
access_log /var/log/nginx/nomdusite
.com.log;
error_log
/var/log/nginx/nomdusite.com.error.log notice;
location / {
proxy_pass
https://www.nomdusite.com:443;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
}
}
Il
est parfois nécessaire de chaîner les certificats, je vous renvoi à
la documentation de Nginx.
Pour
tester la syntaxe de la configuration de nginx :
nginx
-t
Pour activer le site, créer un alias dans /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/nomdusite.com /etc/nginx/sites-enabled/nomdusite.com
Puis
ensuite pour appliquer la nouvelle configuration :
/etc/init.d/nginx
reload