Configurar servidor Nginx con soporte para el protocolo HTML 2.0 en Debian

Se va a explicar como poder reemplazar de forma limpia la versión de Nginx por la versión 1.9.14 (la más actual a fecha de este artículo) en sistemas debian, soportando HTTP 2.0 y respetando los ficheros de configuración y opciones de compilación del paquete predeterminado.

Descargar Nginx (1.9.14): http://nginx.org/en/download.html

Dependencias para poder compilar Nginx en Debian.

aptitude install build-essential
aptitude install libssl-dev libpcre3 libpcre3-dev
aptitude install libxml2-dev
aptitude install libxslt-dev
aptitude install libgd2-xpm libgd2-xpm-dev 
aptitude install libgeoip-dev 
aptitude install libpam-dev
aptitude install checkinstall

Eliminar la versión de Nginx que se tenga instalada en el sistema actualmente.

apt-get remove nginx nginx-common nginx-full

Compilar / instalar / Crear paquete deb de Nginx 1.9.14 con soporte para HTML 2.0.

./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-http_v2_module
make 
checkinstall --install=no --fstrans=yes

El paquete nginx_1.9.14_XXX.deb generado puede ser utilizado para sustituir el paquete Nginx de los repositorios oficiales dentro de la misma versión de Debian donde fue compilado. Lógicamente siempre que no se hayan actualizado versiones de otros paquetes de los cuales depende Nginx, como por ejemplo openssl.

Configurar HTTP 2.0 en Nginx

server {
        ...
        listen          443 ssl html2;
        ...

init script para nginx.

nginx
#!/bin/sh
 
### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# 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
 
# Include nginx defaults if available
if [ -f /etc/default/nginx ]; then
	. /etc/default/nginx
fi
 
test -x $DAEMON || exit 0
 
set -e
 
. /lib/lsb/init-functions
 
test_nginx_config() {
	if $DAEMON -t $DAEMON_OPTS >/dev/null 2>&1; then
		return 0
	else
		$DAEMON -t $DAEMON_OPTS
		return $?
	fi
}
 
case "$1" in
	start)
		echo -n "Starting $DESC: "
		test_nginx_config
		# Check if the ULIMIT is set in /etc/default/nginx
		if [ -n "$ULIMIT" ]; then
			# Set the ulimits
			ulimit $ULIMIT
		fi
		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
		test_nginx_config
		# Check if the ULIMIT is set in /etc/default/nginx
		if [ -n "$ULIMIT" ]; then
			# Set the ulimits
			ulimit $ULIMIT
		fi
		start-stop-daemon --start --quiet --pidfile \
		    /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
		echo "$NAME."
		;;
 
	reload)
		echo -n "Reloading $DESC configuration: "
		test_nginx_config
		start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \
		    --exec $DAEMON || true
		echo "$NAME."
		;;
 
	configtest|testconfig)
		echo -n "Testing $DESC configuration: "
		if test_nginx_config; then
			echo "$NAME."
		else
			exit $?
		fi
		;;
 
	status)
		status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
		;;
	*)
		echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2
		exit 1
		;;
esac
 
exit 0

Configurar para que Nginx inicie en el arranque del sistema.

chmod u+x /etc/init.d/nginx
update-rc.d -f nginx defaults