Force proxy inverse Nginx https

Nous avons une configuration de serveur pour le proxy inverse utilisant nginx. Ce serveur redirecta les visiteurs vers le serveur correspondant sur lequel ils sont accédés. Maintenant, je veux configurer le nginx.conf pour forcer les redirect vers https. Le problème est que je reçois une erreur “trop ​​de redirection”. J’ai essayé d’utiliser une réécriture et d’append “proxy_set_header X-Forwarded-Proto https;” mais rien ne fonctionne. Y a-t-il un moyen d’y parvenir? Nous avons mis en place un certificate ssl sur cloudflare afin de ne pas avoir à l’append à la configuration.

Vous trouverez ci-dessous le paramètre de configuration du nginx actuel.

server { listen 80 default_server; listen [::]:80 default_server; server_name localhost; root /usr/share/nginx/html; if ($http_x_forwarded_proto = "http") { rewrite ^/(.*)$ https://development-link/$1 permanent; } # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://development-elb1; proxy_set_header X-Forwarded-Proto https; } location /en { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://development-elb2; proxy_set_header X-Forwarded-Proto https; } 

Donc, vous utilisez cloudflare comme DNS.

Il est très facile de forcer les utilisateurs à accéder à https même si vous utilisez une version gratuite de cloudflare à la fin de cloudflare. Et juste héberger la version http sur votre Nginx.

1- Ouvrez cloudflare et choisissez votre domaine.

2- Allez dans l’onglet Règles de page.

3- Créer une règle de page

4- pour l’URL, mettez http://www.example.com/ *

5- pour le réglage, choisissez toujours utiliser https

6- Cliquez sur Enregistrer et déployer

Maintenant, vous avez configuré sur votre cloudflare pour forcer l’utilisateur à redirect vers l’URL https.

Utilisez un bloc séparé.

 # Redirect HTTP to HTTPS server { listen 80 default_server; listen [::]:80 default_server; server_name localhost; return 301 https://$host$request_uri; } # HTTPS server { listen 443 default_server; listen [::]:443 default_server; server_name localhost; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://development-elb1; proxy_set_header X-Forwarded-Proto https; } location /en { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://development-elb2; proxy_set_header X-Forwarded-Proto https; } }