nginx a géré SSL avec Tomcat 7

Quelle est la configuration correcte dans server.xml pour que nginx gère SSL? Ma configuration actuelle se traduit par une “boucle de redirection”, sauf si je marque la connexion standard tomcat “sécurisée”, ce qui n’est pas ce que je veux. Mon application nécessite https pour toutes les demandes et redirige vers https si http est utilisé. Si je mets secure = “true”, il ne redirige plus mais la “boucle de redirection” a disparu. Qu’est-ce que je fais mal?

Mon tomcat server.xml actuel:

 

Nginx conf:

  server { listen 80 default_server; server_name localhost, mydomain.com; location / { add_header 'Access-Control-Allow-Origin' '*'; proxy_pass http://localhost:8080/; proxy_redirect off; 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 http; proxy_send_timeout 6000; } } server { server_name localhost, mydomain.com; listen 443; ssl on; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; #make sure you already have this certificatee pair! ssl_certificatee /etc/nginx/cert/server.crt; ssl_certificatee_key /etc/nginx/cert/server.key; ssl_session_cache shared:SSL:10m; error_page 497 https://$host:$server_port$request_uri; # Our endpoint for tomcat reverse-proxy, assuming your endpoint java-servlet knows # how to handle http://localhost/gadgets requests location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Url-Scheme $scheme; proxy_redirect off; proxy_connect_timeout 240; proxy_send_timeout 240; proxy_read_timeout 240; # note, there is not SSL here! plain HTTP is used proxy_pass http://localhost:8080/; } } 

Les modifications que j’ai apscopes pour que Tomcat / Spring définisse les indicateurs de cookies sécurisés appropriés:

Assurez-vous que le port de redirection SSL (443) de Tomcat s’exécute dans server.xml :

  ...  ...  

Assurez-vous que votre RemoteIpValve est configuré dans votre hôte dans server.xml :

  ...  ...  ...      

Assurez-vous que le protocole est transféré depuis son sharepoint terminaison dans nginx.conf :

 # Tomcat we're forwarding to upstream tomcat_server { server 127.0.0.1:9090 fail_timeout=0; } # Main server proxy server { listen 443 ssl; server_name sample.com; # HTTPS setup ssl on; ssl_session_timeout 10m; ssl_session_cache shared:SSL:10m; #ssl cyphers ... #ssl certs ... location / { # Forward SSL so that Tomcat knows what to do proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://tomcat_server; proxy_set_header X-Forwarded-Proto https; proxy_redirect off; proxy_connect_timeout 240; proxy_send_timeout 240; proxy_read_timeout 240; # Show error pages from S3 when down proxy_next_upstream error timeout http_502 http_503 http_504; error_page 502 503 504 https://s3.amazonaws.com/sample.com/maint; } 

La plupart de mon proxy / SSL nginx conf est inclus ci-dessus pour être complet. J’espère que ça aide quelqu’un.

Nécessité de gérer les en-têtes x-forwarded by et x-forwarded-proto dans Tomcat. Ajoutez ce qui suit à votre server.xml: