J'ai nginx configuré pour être mon serveur web visible de l'extérieur qui parle à un backend via HTTP.
Le scénario que je veux réaliser est:
Ma configuration actuelle (où le backend est configuré correctement) est:
serveur { écouter 80; nom_serveur localhost; emplacement ~. * { proxy_pass http: // backend; proxy_redirect http: // backend https: // $ Host; proxy_set_header Host $ Host; } }
Mon problème est que la réponse au client (étape 4) est envoyée via HTTP et non HTTPS. Des idées?
Le type de proxy que vous essayez de configurer est appelé proxy inverse. Une recherche rapide de proxy inverse nginx m'a donné cette page:
http://intranation.com/entries/2008/09/using-nginx-reverse-proxy/
En plus d'ajouter quelques fonctionnalités utiles comme un en-tête X-Forwarded-For (qui donnera à votre application une visibilité sur l'IP source réelle), elle le fait spécifiquement:
proxy_redirect off
Bonne chance! :)
J'utilise la configuration suivante en production
server {
listen xxx.xxx.xxx.xxx:80;
server_name www.example.net;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen xxx.xxx.xxx.xxx:443;
server_name www.example.net;
root /vhosts/www.example.net;
ssl on;
ssl_certificate /etc/pki/nginx/www.example.net.crt;
ssl_certificate_key /etc/pki/nginx/www.example.net.key;
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
ssl_dhparam /etc/pki/nginx/dh2048.pem;
# intermediate configuration. Tweak to your needs.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}