2017-06-07 1 views
0

Je suis actuellement en train d'essayer de mettre en place un environnement avec Rundeck en cours d'exécution et nginx reverse proxy ssl. J'ai trouvé différents tutoriels en ligne pour ce scénario mais aucun d'entre eux n'a fonctionné pour moi. Je travaille dans un environnement Linux où rundeck et nginx s'exécutent. Mon fichier de configuration nginx pour loooks de Rundeck comme celui-ci:Rundeck derrière et SSL Proxy

server { 
     access_log /var/log/nginx/rundeck.access.log main; 


     listen 443; 
     listen  [::]:443; 
     ssl on; 
     ssl_certificate /etc/nginx/conf.d/cert.crt; 
     ssl_certificate_key /etc/nginx/conf.d/key.rsa; 

     location/{ 
      proxy_pass http://localhost:4440/; 
      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-Ssl on; 
} 

     error_page 404 /404.html; 
      location = /40x.html { 
     } 

     error_page 500 502 503 504 /50x.html; 
      location = /50x.html { 
     } 
    } 

De plus, je configuré ces paramètres dans Rundeck: framework.server.url = https://localhost:4440 et grails.serverURL=https://lde71d6p.de.top.com:443 j'ai essayé différentes combinaisons avec https ou seulement http, sans port et avec le port. Aucun d'entre eux ne fonctionne correctement.

Avec la configuration actuelle, j'obtiens la situation d'erreur suivante. Si j'essaye d'appeler http://hostname.top.com -> erreur de connexion (semble bien parce que le port 80 n'est pas manipulé par nginx) https://hostname.top.com -> obtient un 302 et est redirigé vers http://hostname.top.com/user/login;jsessionid=xxxxxxx et obtient une erreur de connexion. https://hostname.top.com/user/login me conduit directement à l'interface de connexion de rundeck. Tout va bien.

Quelqu'un peut-il m'aider s'il vous plaît pour résoudre les situations d'erreur que j'ai mentionné en premier?

Cordialement,

Max

Répondre

0

Pour exécuter Rundeck derrière proxy SSL, vous devez les trois paramètres suivants:

https://github.com/rundeck/rundeck/wiki/FAQ#can-i-do-ssl-offloading

  • Mettre en place Rundeck http
  • dans fichier de profil, ajoutez l'option -Drundeck.jetty.connector.forwarded = true à RDECK_JVM
  • Set framework.rundeck.url et grails.serverURL à utiliser https

Dans votre cas, le réglage du profil ne semble pas avoir encore été fait.

Le profil se trouve dans /etc/rundeck/profile. (Il peut dépendre de la distribution)

Ajouter des options -Drundeck.jetty.connector.forwarded=true-RDECK_JVM comme suit:

RDECK_JVM="-Djava.security.auth.login.config=$JAAS_CONF \ 
     -Dloginmodule.name=$LOGIN_MODULE \ 
     -Drdeck.config=$RDECK_CONFIG \ 
     -Drundeck.server.configDir=$RDECK_SERVER_CONFIG \ 
     -Dserver.datastore.path=$RDECK_SERVER_DATA/rundeck \ 
     -Drundeck.server.serverDir=$RDECK_INSTALL \ 
     -Drdeck.projects=$RDECK_PROJECTS \ 
     -Drdeck.runlogs=$RUNDECK_LOGDIR \ 
     -Drundeck.config.location=$RDECK_CONFIG/rundeck-config.properties \ 
     -Djava.io.tmpdir=$RUNDECK_TEMPDIR \ 
     -Drundeck.server.workDir=$RUNDECK_WORKDIR \ 
     -Dserver.http.port=$RDECK_HTTP_PORT \ 
     -Drundeck.jetty.connector.forwarded=true" 
+0

Hey merci pour la réponse, j'ai oublié de mentionner, je l'ai déjà changé les arguments JVM: 'exportation RDECK_JVM =" - Dloginmodule.conf.name = jaas-gdiscombined.conf \ -Dloginmodule.name = combiné -Drundeck.jetty.connector.forwarded = true "Cela n'a pas aidé :( – hypePG

+0

Dans mon'/etc/rundeck/framework.properties', 'framework.server.url' est http et' framework.rundeck.url' est https Vérifiez votre paramètre. – minamijoyo

0

La raison derrière votre erreur

Erreur-1: listen 443 votre serveur écoute pas sur le port 80, pour le réparer ajouter listen 80; dans votre config.

Erreur-2: location/{ proxy_pass http://localhost:4440/; qui redirige les requêtes vers 4440, en obtenant le code d'erreur 302.

Erreur-3 & 4: Mauvaise configuration du proxy.

Veuillez utiliser ci-dessous la configuration pour résoudre votre problème.

server { 

listen 80; 

server_name <hostname>; 

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_redirect http://localhost:4440/ /; 

    proxy_pass http://localhost:4440/; 
    } 

}