2 votes

Nginx Redirect HTTP to HTTPS automatiquement pour les sous-domaines

J'essaie de rediriger tout mon trafic de http a https automatiquement. Comment puis-je faire une redirection 301 sur tous mes domaines et sous-domaines ?

Voici le fichier de configuration NGNIX

upstream app_server {
    server unix:/run/DigitalOceanOneClick/unicorn.sock fail_timeout=0;
}

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name sprintsocial.io app.sprintsocial.io admin.sprintsocial.io;
#       return 301 https://$server_name$request_uri;
}

server {
    #listen   80;
    listen 443;
    root /home/rails/sprintsocial/public;
    #server_name _;
    server_name sprintsocial.io app.sprintsocial.io admin.sprintsocial.io;
    ssl on;
    ssl_certificate /home/sprintsocial.io.chained.crt;
    ssl_certificate_key /home/sprintsocial.io.key;
    index index.htm index.html;
#    return 301 https://$server_name$request_uri;

#    rewrite ^/(.*) https://app.sprintsocial.io/$1 permanent;
#    rewrite ^/(.*) https://admin.sprintsocial.io/$1 permanent;

    location / {
            try_files $uri/index.html $uri.html $uri @app;
    }

    location ~* ^.+\.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mp3|flv|mpeg|avi)$ {
                    try_files $uri @app;
            }

     location @app {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_pass http://app_server;
    }
}

6voto

Paweł Tatarczuk Points 486

Vous devriez être en mesure de le faire avec :

server {
    listen [::]:80 default_server ipv6only=off;
    server_name sprintsocial.io app.sprintsocial.io admin.sprintsocial.io;
    return 301 https://$host$request_uri;
}

Veuillez noter que :

  • listen [::]:80 ipv6only=off se lie à la fois à ipv4 et à ipv6,
  • $host La variable provient de la demande, $server_name vient de server qui traite la demande, grande différence
  • elle sera rejetée par d'autres server lorsque les directives server_name correspond à la demande

0 votes

La réponse originale pourrait maintenant fonctionner avec ipv4, ipv6only est activé depuis nginx 1.3.4.

0 votes

Quand j'essaie de visiter http://app.sprintsocial.io elle va https://sprintsocial.io au lieu de https://app.sprintsocial.io Une idée pour résoudre ce problème ?

0 votes

Cela peut être le cache du navigateur (301 est une redirection permanente), vérifiez avec curl : $ curl -I http://app.sprintsocial.io - Location doit pointer vers https://app.sprintsocial.io . Cela devrait fonctionner avec n'importe quel sous-domaine.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X