Affichage des articles dont le libellé est nginx. Afficher tous les articles
Affichage des articles dont le libellé est nginx. Afficher tous les articles

lundi 18 juin 2018

Google cloud platform, forward HTTP to HTTPS


 Hello,

One of the common issue using GCP is loadbalancer HTTP to HTTPS forward.
Still a feature request but not resolved yet.

The best solution I found is the following.
Using Nginx server, HTTP connection are forward to HTTPS in server:443 part.

server {
        listen 443 ssl default_server;
        listen [::]:443 ssl;
if ($http_x_forwarded_proto = "http") {
        return 301 https://$host$request_uri;
    }
(rest of your configuration : ssl, ...)
}


This way your site is always HTTPS.

lundi 13 novembre 2017

Nginx proxy pass Redis

Salut,

Un petit reverse proxy Redis avec Nginx, utile dans le cas ou votre Redis est accessible uniquement en interne

Installer nginx, compiler avec l'option --with-stream ou installer paquet nginx-extra.
Dans nginx.conf, directement au meme niveau que http{} declare le stream :

stream {
    upstream backend {
        server 10.0.0.4:6379;
    }

    server {
        listen 6379;
        proxy_pass backend;
    }
}

De cette facon on peut faire passer tout ce qu'on veut, dans ce cas Redis (tcp/6379). Facile.

lundi 18 juin 2012

Nginx reverse proxy avec SSL


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
192.168.0.1 www.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