在本文中,我们将说明如何在Nginx服务器中将HTTP通信重定向到HTTPS。在Nginx中将HTTP重定向到HTTPS的首选方法是为站点的每个版本配置一个单独的server block,你应该避免使用if指令重定向流量,因为这可能会导致服务器的意外行为。开启HTTPS可参考网站从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重定向。
相关主题 |