云网牛站
所在位置:首页 > Linux云服务器 > 在Nginx服务器中将HTTP重定向到HTTPS的方法

在Nginx服务器中将HTTP重定向到HTTPS的方法

2019-09-27 10:08:40作者:叶云稿源:云网牛站

在本文中,我们将说明如何在Nginx服务器中将HTTP通信重定向到HTTPS。在Nginx中将HTTP重定向到HTTPS的首选方法是为站点的每个版本配置一个单独的server block,你应该避免使用if指令重定向流量,因为这可能会导致服务器的意外行为。开启HTTPS可参考网站从HTTP升级成HTTPS完全配置教程

在Nginx服务器中将HTTP重定向到HTTPS的方法

 

将站点HTTP重定向到HTTPS

要将单个网站重定向到HTTPS,请打开域配置文件并进行以下更改:

server {

 listen 80;

 listen [::]:80;

 server_name linuxize.com www.linuxize.com;

 return 301 https://linuxize.com$request_uri;

}

让我们逐行分解代码:

1、listen 80-server block将监听指定域在80端口上的传入连接。

2、server_name linuxize.com www.linuxize.com-指定server block的域名,确保将其替换为域名。

3、return 301 https://linuxize.com$request_uri-将流量重定向到站点的HTTPS版本$request_uri变量是包含参数的完整原始请求URI。

通常,你还希望将站点的HTTPS www版本重定向到非www,反之亦然,推荐的重定向方式是为www和非www版本创建一个单独的server block。

例如,要将HTTPS www请求重定向到非www,应使用以下配置:

server {

 listen 80;

 listen [::]:80;

 server_name linuxize.com www.linuxize.com;

 return 301 https://linuxize.com$request_uri;

}

server {

 listen 443 ssl http2;

 server_name www.linuxize.com;

 # . . . other code

 return 301 https://linuxize.com$request_uri;

}

server {

 listen 443 ssl http2;

 server_name linuxize.com;

 # . . . other code

}

 

将所有站点重定向到HTTPS

如果服务器上托管的所有网站都配置为使用HTTPS,并且你不想为每个站点创建单独的HTTP服务器块,则可以创建一个通用的HTTP服务器块,该块会将所有HTTP请求重定向到适当的HTTPS块。

要创建一个通用的HTTP块,它将访问者重定向到站点的HTTPS版本,请打开Nginx配置文件并进行以下更改:

server {

 listen 80 default_server;

 listen [::]:80 default_server;

 server_name _;

 return 301 https://$host$request_uri;

}

让我们逐行分析代码:

1、listen 80 default_server-将此服务器块设置为所有不匹配域的默认块。

2、server_name _-_是一个无效域名,从不与任何实际域名匹配。

3、return 301 https://$host$request_uri-将通信重定向到状态代码为301(永久移动)的相应HTTPS服务器块,$host变量保存请求的域名。

例如,如果访问者在浏览器中打开http://example.com/page2,则Nginx会将请求重定向到https://example.com/page2。

如果可能,最好在每个域的基础上创建重定向,而不是从全局HTTP到HTTPS重定向。

 

结论

在网站上安装SSL证书后,应将HTTP流量重定向到HTTPS。

在Nginx中,将HTTP重定向到HTTPS的首选方法是创建一个单独的服务器块并执行301重定向。

 

相关主题

在阿里云服务器CentOS上Apache安装SSL证书配置https的方法

精选文章
热门文章