Nginx自动为子域redirectHTTP到HTTPS

我正尝试将所有stream量从http自动redirecthttps 。 我怎样才能301redirect到我所有的域名和子域名?

这是NGNIXconfiguration文件

 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; } } 

你应该能够做到这一点:

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

请注意:

  • listen [::]:80 ipv6only=off绑定到ipv4和ipv6,
  • $hostvariables来自请求, $server_name来自处理请求的server ,差别很大
  • server_name匹配请求时,它将被其他server指令server_name