Comment configurer la redirection de http vers https avec nginx?

Je me bats avec cette question toute la journée. Voici mon nginx.cong :

 upstream my_website.co { server 127.0.0.1:8080; } server{ listen 80; listen 443 default ssl; # return 301 https://www.my_website.co; - I put it here, but it didn't work ssl on; ssl_certificatee /etc/nginx/certs/my_website.co.crt; ssl_certificatee_key /etc/nginx/certs/my_website.co.private.key; server_name my_website.co _; root /home/deployer/my_website/public; location / { proxy_set_header X_FORWARDED_PROTO $scheme; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header CLIENT_IP $remote_addr; if (!-f $request_filename) { proxy_pass http://my_website.co; break; } if (-f $document_root/system/maintenance.html) { return 503; } } # return 301 https://www.my_website.co; - I put it here, but it didn't work 

Pourriez-vous m’aider, s’il vous plaît, comment redirect tout de http à https ?

Mon code Rails:

ApplicationController

 before_filter :ensure_domain APP_DOMAIN = 'www.my_website.co' def ensure_domain if request.env['HTTP_HOST'] != APP_DOMAIN && Rails.env != 'development' redirect_to "https://#{APP_DOMAIN}#{request.env['REQUEST_PATH']}", :status => 301 end end 

Je serai reconnaissant pour chaque aide, je suis perdu ici.

Je vous remercie

Je fais quelque chose comme ça dans le fichier de configuration nginx sur un de mes sites et cela fonctionne sans problème. Je n’ai rien dans mon ApplicationController pour forcer la redirection non plus.

 server { listen 80; server_name my_website.co; rewrite ^ https://server_name$request_uri? permanent; } server { listen 80; server_name www.my_website.co; rewrite ^ https://server_name$request_uri? permanent; } server { listen 443; server_name my_website.co; root /home/deployer/my_website/public; ssl on; ssl_certificatee /etc/nginx/certs/my_website.co.crt; ssl_certificatee_key /etc/nginx/certs/my_website.co.private.key; // rest of your config file below } 

La section du serveur que vous avez ne doit écouter que le port 443, donc retirez-le du port 80 dans votre configuration Nginx. Ajoutez ensuite une nouvelle section de serveur comme celle-ci dans votre fichier de configuration Nginx:

 serveur {
     écouter 80;
     nom_serveur mon_site.co;
     réécrire ^ https: // nom_serveur $ request_uri?  permanent;
 }

Nginx va ensuite tout redirect vers la version SSL pour vous. Vous pouvez supprimer le code dans votre ApplicationController.

Dans Rails 4 Nous pouvons le faire directement dans application.rb

 config.force_ssl = true 

Pas besoin de jouer avec le fichier de configuration nginx.