在本指南中,我们将说明如何在Nginx中将HTTP流量重定向到HTTPS。

Nginx发音为“ engine x”,是一个免费的,开源的,高性能的HTTP和反向代理服务器,负责处理Internet上一些最大站点的负载。

如果您是开发人员或系统管理员,则可能会定期与Nginx打交道。您可能会执行的最常见任务之一是将HTTP流量重定向到网站的安全(HTTPS)版本。

与HTTP以纯文本形式发送和返回请求和响应不同,HTTPS使用TLS / SSL加密客户端和服务器之间的通信。

使用HTTPS有很多好处,例如:

  • 所有数据都是双向加密的。因此,如果被拦截,则无法读取敏感信息。
  • Google Chrome浏览器和所有其他流行的浏览器都会将您的网站标记为安全。
  • HTTPS允许您使用HTTP/2协议,
  • Google偏爱HTTPS网站。如果通过HTTPS提供服务,您的网站将排名更高。

在Nginx中将HTTP重定向到HTTPS的首选方法是为站点的每个版本配置一个单独的服务器块。您应该避免使用 if指令重定向流量,因为它可能导致服务器的行为无法预测。

将每个站点的HTTP重定向到HTTPS

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

server {
    listen 80;
    listen [::]:80;
    server_name myfreax.com www.myfreax.com;
    return 301 https://myfreax.com$request_uri;
}

让我们逐行细分代码:

  • listen 80-服务器块将侦听端口80上指定域的传入连接。
  • server_name myfreax.com www.myfreax.com -指定服务器块的域名。确保将其替换为您的域名。
  • return 301 https://myfreax.com$request_uri -将流量重定向到网站的HTTPS版本。 $request_uri变量是包含参数的完整原始请求URI。

通常,您还希望将站点的HTTPS www版本重定向到非www或反之。推荐的重定向方法是为www和非www版本创建一个单独的服务器块。

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

server {
    listen 80;
    listen [::]:80;
    server_name myfreax.com www.myfreax.com;
    return 301 https://myfreax.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.myfreax.com;

    # . . . other code

    return 301 https://myfreax.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name myfreax.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;
}

让我们逐行分析代码:

  • listen 80 default_server-将此服务器块设置为所有不匹配域的默认(全部捕获)块。
  • server_name _ -_是一个无效域名,从未与任何真实域名匹配。
  • 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重定向。

如果你喜欢我们的内容可以选择在下方二维码中捐赠我们,或者点击广告予以支持,感谢你的支持