0
votes

Comment configurer NGinx pour rediriger le trafic HTTPS sur mon application Springboot

Je suivais la pile question Comment puis-je configurer un certificat SSL letSenCrypt et l'utiliser dans une application de démarrage à ressort? Pour configurer mon application Springboot pour utiliser HTTPS (Crossbot) mais que mon Nginx ne redirige pas correctement à mon application.

Plus de contexte: J'utilise Cloudflare, pour rediriger les demandes www.example.com (mon domaine) à la machine où j'ai Nginx et mon application Springboot. Je souhaite NGinx de rediriger ce HTTP sur le port 80 demandes à mon application qui exécute sur le port 8443 (HTTPS). J'ai installé des certificats Certbot (LetSenCrypt) et configurez ma configuration NGinx avec celles. P>

Ma configuration Après avoir généré mon certificat est ci-dessous: P>

Springboot Application.Properties Strong > p> xxx pré>

update 1 >> nginx /etc/nginx/nginx.conflef/nginx.conflef //p >

(...)
<title>www.example.com | 522: Connection timed out</title>
(...)
    <h2 class="cf-subheadline">Connection timed out</h2>
(...)
        <span class="cf-status-desc">www.example.com</span>
(...)
        <h2>What happened?</h2>
        <p>The initial connection between Cloudflare's network and the origin web server timed out. As a result, the web page can not be displayed.</p>
                <h5>If you're the owner of this website:</h5>
                   <span>Contact your hosting provider letting them know your web server is not completing requests. An Error 522 means that                         the request was able to connect to your web server, but that the request didn't finish. The most likely cause is that 
                         something on your server is hogging resources.
                   </span>
(...)


11 commentaires

J'ai supprimé la ligne que vous avez dit, redémarrez la Nginx et mon application. Après avoir testé l'Access.log n'a pas changé et que l'erreur.log a ceci: 2019/03/05 14:02:16 [Avertissement] 26131 # 26131: Nom du serveur "https: // $ Server_Name $ requier_uri" a des symboles suspects dans /etc/nginx/nginx.confr:20. Pourquoi dit-il que c'est suspect? Même problème est toujours en cours cependant


Accolades enlevées et en question mises à jour également. Nouveau redémarrage de Nginx et de mon application de printemps, mais le même problème se produit toujours.


J'ai ajouté la sortie de cette commande dans ma question. En passant, merci de votre aide jusqu'à présent.


Après votre dernier commentaire, les choses ont changé. Il semble que certains problèmes de redirection se produisent maintenant, mais je ne suis pas sûr. Vous pouvez voir par les mises à jour


Oui, j'utilise Cloudflare. L'objectif est que l'utilisateur fait un exemple.com (Port 80) Demande à mon domaine qu'il soit redirigé to exemple.com où mon application est en cours d'exécution (Port 8443). Je mette à jour la question avec les résultats de la courroie


Si Cloudflare se termine SSL, vous n'avez pas besoin de SSL sur le serveur NGinx. Cloudflare se connecte au port 80 de votre serveur (pas 443)


J'ai supprimé la configuration SSL de Nginx Server. Vous pouvez voir sur la mise à jour n ° 2. Est-ce que je l'ai fait correctement?


Purge-tu le cache Cloudflare?


Je l'ai fait maintenant que vous avez dit, puis a redémarré Nginx et mon application et nettoyé le cache du navigateur aussi, mais toujours le même problème se produit


Vous avez une autre boucle de redirection? Vous devez utiliser Curl pour tester le serveur et vérifier les entrées de journal d'accès correspondantes (pouvez-vous utiliser le format de journal d'accès par défaut - car il contient le code d'état qui peut être utile). Votre service 8443 a-t-il des fichiers journaux?


Une partie du problème est résolue comme vous pouvez le constater dans la mise à jour 3, mais je ne sais pas comment configurer le NGinx pour obtenir un certificat CartBot à la place Cloudflare. De plus, comment puis-je utiliser mon point final maintenant après ce changement?


3 Réponses :


0
votes

Mon problème est partiellement résolu. Voici mon scénario et la configuration que j'ai utilisée:

  • Application forte>: Springboot + angular6 (l'application Springboot utilise SSL SSL STRY> sur le port 8443 strong> et est configuré pour utiliser des certificats CerTBot) p> li>

  • Résolution de domaine fort>: Cloudflare (configuré pour résoudre DNS de mon domaine à l'adresse IP de My Cloud Server) P> Li>

  • Cloud Server strong>: Amazon Lightsail (machine Linux dans le nuage où NGinx et mon application sont en cours d'exécution) P> LI>

  • serveur Web strong>: NGinx (utilisé dans la machine Amazon pour rediriger le trafic HTTP sur le port 80 fort> à https sur le port 8443 strong> qui est utilisé par mon application Springboot) P> li> ul>

    Springboot Application.Properties strong> P>

    pid /run/nginx.pid;
    
    events {
        worker_connections 768;
    }
    
    http {
    
        log_format formatWithUpstreamLogging '[$time_local] $remote_addr - $remote_user - $server_name to: $upstream_addr: $request';
    
        #main log format
        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;
        error_log   /var/log/nginx/error.log;
    
        server {
    
            listen 80;
    
            server_name www.example.com example.com;
    
            ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
            ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    
            # managed by Certbot
            location / {
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header Host $host;
                    proxy_set_header X-NginX-Proxy true;
                    proxy_pass https://localhost:8443/;
                    proxy_redirect http://localhost:8443/ https://localhost:8443/;
           }
    
        }
    
    }
    


0 commentaires

0
votes

Je sais que c'est vieux, mais je voudrais partager ma configuration nginx pour d'autres personnes qui peuvent se retrouver dans ce post.

Ma totalité de la configuration est plus grande, mais la partie de redirection ressemble comme suit: P >

server {
    listen 80;

    location / {
        return 301 https://$host:8443$request_uri;
    }
}


0 commentaires

0
votes

Vous devez ajouter ceci à votre Server Code> Block:

# Redirect non-https traffic to https
if ($scheme != "https") {
    return 301 https://$host$request_uri;
}


0 commentaires