文章内容

2018/9/29 10:13:09,作 者: 黄兵

nginx http跳转到https

最近需要将nginx的http全部跳转到https,具体代码如下:

server {
	 listen  80 default_server;
	listen [::]:80 default_server;
	server_name _;
	return  301 https:// $ host $ request_uri ;
}

重定向响应与HTTP状态代码301一起发送,该状态代码301告诉浏览器(和搜索引擎)这是永久重定向。这使浏览器记住重定向,以便下次访问时,浏览器将在内部进行重定向。如果您设置了HSTS标头 - 您应该这样做 - 浏览器甚至会针对您的域的每个请求执行此操作。

请注意,上面是一个非常通用的Nginx配置,它将重定向服务器上的所有主机名。您可以自由指定要重定向的特定主机名。另外:如果你有点偏执 - 这在网络安全方面不是坏事 - 你会注意到它正在使用Nginx $host变量。此变量可以由HTTP Host头设置 - 由客户端提供。以这种方式使用它很可能是安全的,但作为一个原则,最好通过使用我们自己设置的变量来安全地使用它:

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

我们必须使用$request_uri变量 - 我们几乎无法控制。要删除恶意请求URI,您应该考虑获取WAF(Web应用程序防火墙)。

参考资料:Nginx 配置 HTTPS 服务器

分享到:

发表评论

评论列表