2017-09-13 4 views
1

J'ai un proxy inverse avec Nginx s'exécutant sur le port 5000 et je veux rediriger toutes les demandes arrivant au port 5000 comme une demande https.Nginx reverse proxy: rediriger toutes les demandes http vers https

En ce moment, j'obtiens l'erreur: 400 Bad Request La requête HTTP simple a été envoyé au port HTTPS

server { 
      listen 5000 ssl; 
      server_name myserver.com; 

      location/{ 
       proxy_pass     http://127.0.0.1:8080; 
       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 $scheme; 
       proxy_set_header   X-Forwarded-Server $host; 
       proxy_set_header   X-Forwarded-Host $host; 
       proxy_set_header   Host $host:5000; 


       add_header 'Access-Control-Allow-Methods' 'GET, POST'; 
       add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type'; 
       add_header 'Access-Control-Allow-Credentials' 'true'; 

       # here comes the basic auth, after the options part 
       auth_basic   'Restricted'; 
       auth_basic_user_file path/to/.htpasswd; 

      } 

      ssl on; 
      ssl_certificate path/to/crt; 
      ssl_certificate_key path/to/key; 
     } 

Eh bien j'ai essayé avec l'ajout

if ($scheme != "https") { 
    rewrite^https://$host$request_uri permanent; 
} 

if ($scheme != "https") { 
    return 301 https://$host$request_uri permanent; 
} 

Rien ne semble résoudre le problème. Que dois-je faire pour résoudre ce problème?

+0

double possible de [nginx redirigent HTTPS à HTTP] (https://stackoverflow.com/questions/3470290/nginx- redirect-https-to-http) – lifeisfoo

Répondre

0

Cela peut sembler simpliste, mais avez-vous essayé d'ajouter "https: //" au début du nom de domaine que vous tapez? J'ai trouvé que la valeur par défaut est toujours une simple requête "http".

+0

Oui cela fonctionne mais après un certain temps pour certaines demandes la page se rafraîchit et 'https: //' est enlevé et je atterris sur la page d'erreur mentionnée ci-dessus – InfamousCoder

+0

La réponse ci-dessous, alors, est celle vous voulez faire une redirection automatique vers l'URL SSL. –

+0

Est-ce que j'utilise un proxy_redirect à l'intérieur? – InfamousCoder

2

En supposant le trafic HTTP est via le port 80, vous pouvez rediriger vers https en ajoutant une écoute de bloc de serveur supplémentaire à ce port:

server { 
    listen 80; 
    server_name myserver.com; 

    location/{ 
     return 301 https://myserver.com$request_uri; 
    } 
}