Nginx设置HTTP页面自动跳转到HTTPS-安信

Nginx设置HTTP页面自动跳转到HTTPS-安信

在Nginx系统中,不少站长遇到这样的问题,配置好HTTPS证书,可以实现访问。可是在输入网址直接是到http网站而非https,每次需要输入https。这种访问方式让各大站长都感到很郁闷。为了解决Nginx系统的这种烦恼,下面介绍两种常用的解决方式:

方法一:在配置80端口的文件里面,写入以下内容即可。

server {

listen    80;

server_name trustauth.cn;

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

 

location / {

root  html;

index index.html index.htm;

}

javascript单独页面通用代码段:以下方法较适合做seo搜索或指定某一个子页单独https

在需要强制为https的页面上加入以下代码进行处理

<script type=”text/javascript”>

var url = window.location.href;

if (url.indexOf(“https”) < 0) {

url = url.replace(“http:”, “https:”);

window.location.replace(url);

}

</script>

PHP页面跳转:添加在网站php页面内

if ($_SERVER[“HTTPS”] <> “on”)

{

$xredir=”https://”.$_SERVER[“SERVER_NAME”].$_SERVER[“REQUEST_URI”];

header(“Location: “.$xredir);

}

方法二:

Nginx配置Http跳转到Https,需要修改Nginx.conf配置文件:

server {

listen       443;

server_name  www.trustauth.cn;

 

ssl                  on;

ssl_certificate      ca.pem;

ssl_certificate_key  ca.key;

ssl_session_timeout  5m;

ssl_protocols  SSLv2 SSLv3 TLSv1;

ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

ssl_prefer_server_ciphers   on;

error_page 497 “https://$host$uri?$args”; #这是跳转Http请求到Https

 

location / {

root   html;

index  index.html index.htm;

}

}

server {

listen 80;

server_name www.trustauth.cn;

rewrite ^/(.*) https://$server_name$1 permanent;    #跳转到Https

}

也就是再添加一个虚拟机server,80端口一个,443端口一个。

但是有些程序只会给你往端口上转发,不会自动修正http为https,这样的程序还不少,例如phpmyadmin:

遇到这样的程序我们需要修改Nginx.conf配置文件,在443的server的fastcgi字段中添加一个语句:

fastcgi_param HTTPS on; #attention!#

例如

location ~ .*\.(php|php5)?$

{

try_files $uri =404;

fastcgi_pass  unix:/tmp/php-cgi.sock;

fastcgi_index index.php;

fastcgi_param HTTPS on; #attention!#

include fcgi.conf;

}

这样就可以了。

上述配置完成后,重启Nginx后即可以使用SSL。IE地址栏中可以直接输入地址不必输入“http://” 或者 “https://” ;也可以输入 “http:// ” 会跳转成为 “https://” 来登录。

/ HDMI资讯