Retour : Page Principale > sommaire aide > sommaire aide logiciels

Nginx


À RÉÉCRIRE (2017-07) - cette page mérite d'être conservée, à condition de la mettre à jour


Ressources


Erreur 502 bad gateway

Si cette erreur s'affiche, cela signifie que Nginx n'arrive pas à faire fonctionner le service lié à l'appel.
Une erreur 502 bad gateway peut survenir si :
  1. Nginx fonctionne comme proxy pour Apache.
  2. Nginx fonctionne avec un daemon PHP-FPM.
  3. Nginx fonctionne avec d'autres types de service comme "gateway"
  4. la configuration du buffering/timeout est mauvaise.

Voir les différentes sources à l'origine de cette erreur et les solutions : http://www.nginxtips.com/502-bad-gateway-using-nginx/

Mettre en place une authentification HTTP

Dans le fichier de configuration du site pour Nginx, ajouter les lignes :
location /chemin/vers/dossier/a/proteger {
    auth_basic "Zone restreinte. Indiquez un login et mot de passe.";
    auth_basic_user_file /chemin/vers/fichier/.htpasswd;
}

Commande pour ajouter un mot de passe au fichier .htpasswd :

(PASSWORD="mot_de_passe";SALT="$(openssl rand -base64 3)";SHA1=$(printf "$PASSWORD$SALT" | openssl dgst -binary -sha1 | sed 's#$#'"$SALT"'#' | base64);printf "login:{SSHA}$SHA1\n" >> /chemin/vers/fichier/.htpasswd)


Note sur les logs

Nginx ne permet pas de définir un fichier de log général au niveau de http {}.
S'il existe des hôtes virtuels, il est nécessaire de définir le fichier de log principale pour chacun des vhost dans server {}.

Script compilation

#!/bin/bash
# Encodage : ISO-8859-15
# Script de compilation de Nginx (compilation de différentes sources)
# Licence : GPL v3
# Auteurs : Jean-Pascal MILCENT
# Log des modifications de ce script :
# 2013-07-10 : création du script

echo "Installation des bibliothèques nécessaires à la compilation"
sudo apt-get install build-essential libc6 libpcre3 libpcre3-dev libpcrecpp0 libssl0.9.8 libssl-dev zlib1g zlib1g-dev lsb-base

echo "Récupération du source de nginx"
cd /home/admin/src/targz

if [ ! -f nginx-1.4.1.tar.gz ] ; then
        wget http://nginx.org/download/nginx-1.4.1.tar.gz
fi

echo "DĂ©compactage de Nginx"
cd /home/admin/src

# Effacement d'un Ă©ventuel ancien dossier
rm -rf nginx-1.4.1

# DĂ©compactage et positionnement dans le dossier de source
tar xvzf targz/nginx-1.4.1.tar.gz
cd  nginx-1.4.1

echo "DĂ©but de la compilation de Nginx"
./configure \
 --sbin-path=/usr/sbin \
 --conf-path=/etc/nginx/nginx.conf \
 --error-log-path=/var/log/nginx/error.log
 --pid-path=/var/run/nginx.pid \
 --lock-path=/var/lock/nginx.lock \
 --http-log-path=/var/log/nginx/access.log \
 --http-client-body-temp-path=/var/lib/nginx/body \
 --http-proxy-temp-path=/var/lib/nginx/proxy \
 --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
 --with-debug \
 --with-http_stub_status_module \
 --with-http_flv_module \
 --with-http_ssl_module \
 --with-http_dav_module \
 --with-ipv6

# Compilation puis installation des binaires
make 
sudo make install

echo "Nginx est installé en version : "
sudo nginx -v

echo "Copie du script demon dans /etc/init.d/nginx et ajout droit d'execution"
if [ ! -f /etc/init.d/nginx ] ; then
    sudo cp /home/admin/script/nginx /etc/init.d/
    sudo chmod +x /etc/init.d/nginx
fi

echo "Pour utiliser Ngninx veuiller le démarrer  : /etc/init.d/nginx restart"


Script de lancement de nginx Ă  placer dans /etc/init.d

#!/bin/bash
 
### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFO
 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/nginx
NAME=nginx
DESC=nginx
 
test -x $DAEMON || exit 0
 
# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
    . /etc/default/nginx
fi
 
set -e
 
case "$1" in
    start)
        echo -n "Starting $DESC: "
        start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true 
        echo "$NAME."
        ;;  
    stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON || true
        echo "$NAME."
        ;;  
    restart|force-reload)
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON || true
        sleep 1
        start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true 
        echo "$NAME."
        ;;  
    reload)
        echo -n "Reloading $DESC configuration: "
        start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON || true
        echo "$NAME."
        ;;  
    configtest)
        echo -n "Testing $DESC configuration: "
        if nginx -t > /dev/null 2>&1
        then
            echo "$NAME."
        else
            exit $?
        fi
        ;;
    *)
        echo "Usage: $NAME {start|stop|restart|reload|force-reload|configtest}" >&2
        exit 1
        ;;
esac

exit 0


Configure le domaine pour Munin avec Nginx