Nginx 自动跳转到HTTPS

发布时间:2016/10/25 0:36:38 打印 字号:

方法一: 

rewrite ^(.*)$ https://$host$1 permanent;

方法二:
适用于 80端口和443 配置在同一个 server{}内

if ($server_port = 80) {
rewrite ^(.*)$ https://$host$1 permanent;
}

方法三:
适用于 80端口和443 配置在同一个 server{}内
适用于高防IP服务器的多域名或者通配符SSL证书

if ( $http_from_https != 'on' ){
rewrite ^(.*) https://$http_host$1 permanent; 
}

方法四:
适用于 80端口和443 配置在同一个 server{}内
指定域名跳转HTTPS

if ($host ~ '^gworg.com'){
return 301 https://www.gworg.com$request_uri;
}

其他情况, 站点绑定很多域名,只让某个域名跳转:

set $redirect_https 1;
if ($server_port = 80) {
set $redirect_https "${redirect_https}2";
}
if ($http_host = 'www.gworg.com') {
set $redirect_https "${redirect_https}3";
}
if ($http_host = 'gworg.com') {
set $redirect_https "${redirect_https}3";
}
if ($redirect_https = "123") {
rewrite ^(.*)$ https://$host$1 permanent;
}

配置示例:

server {
listen       80;
server_name  www.gworg.com;
rewrite ^ https://$http_host$request_uri? permanent;
}
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/cacert.pem;
ssl_certificate_key /etc/ssl/privkey.pem;
server_name www.gworg.com;  
server_tokens off;
location / {
fastcgi_param   HTTPS               on;
fastcgi_param   HTTP_SCHEME         https;
}
}