如何在 Nginx中将HTTP重定向到HTTPS
介绍
Nginx(发音为“Engine-X”)是一个基于 Linux的Web 服务器和代理应用程序。Nginx 是用于重定向和管理 Web 流量的强大工具。它可以轻松配置为将未加密的HTTP Web流量重定向到加密的HTTPS服务器。
本指南将向您展示如何使用 Nginx将HTTP重定向到HTTPS。
先决条件
- 运行Nginx的Linux服务器
- 具有sudo权限的用户帐户
- 远程登录到Web服务器(可选,仅当您不直接在 Web 服务器上工作时才需要)
- 访问终端/命令行(Ctrl-Alt-T 或 Ctrl-Alt-F2)
HTTP 到 HTTPS 重定向
要强制执行HTTP到HTTPS重定向,您需要编辑 Nginx 配置文件。
大多数情况下,您可以在/etc/nginx/sites-available目录中找到该文件。如果未找到,请在此处搜索:/etc/nginx/nginx.conf、 /usr/local/nginx/conf或/usr/local/etc/nginx。
找到 Nginx 配置文件后,使用以下命令在文本编辑器中打开它:
sudo nano /etc/nginx/sites-available/server.conf
将该位置替换为配置文件的实际位置和名称。
注意:如果您是远程连接,请确保您首先通过 SSL 登录。此外,如果您使用图形界面,则可以浏览到文件位置而不是使用终端命令。
打开配置文件进行编辑后,插入下面的代码块之一。完成编辑后,保存文件并退出。然后,使用以下命令重新启动 Nginx 服务:
sudo service nginx restart
Nginx 将所有 HTTP 流量重定向到 HTTPS
打开Nginx配置文件进行编辑,然后插入如下代码:
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
以下是命令的细分:
-
Listen 80
:这会指示系统捕获端口 80 上的所有 HTTP 流量 -
Server_name _;
: 这将匹配任何主机名 Return 301
: 这告诉浏览器(和搜索引擎)这是一个永久重定向https://$host$request_uri
: 这是一个短代码,用于指定用户输入的任何内容的 HTTPS 版本
编辑后,HTTP 默认服务器的所有流量都重定向到 HTTPS。
注:这应该是唯一的服务器模块上的80端口侦听(服务器块是在Nginx的配置代码单元它是由一个名字和大括号标记。)
重定向特定站点
您可能有多个服务器,但只有其中一些可能需要 HTTPS。在服务器块中指定服务器名称以重定向选定的流量:
server {
listen 80 default_server;
server_name gworg.com;
return 301 https://gworg.com$request_uri;
}
将名称my_app.com替换为您要重定向的服务器的名称。您可能还想通过添加另一个服务器块来添加其他站点。只需复制代码,然后切换服务器名称即可。
仅接受 SSL 连接
添加此代码以确保服务器仅接受端口 443 上的 SSL 连接:
server {
listen 443 ssl default_server;
server_name www.gworg.com;
}
server {
listen 443 ssl;
server_name www.gworg.cn;
}
此代码块将设置两个网站www.gworg.com和www.gworg.cn仅接受 SSL 连接。您可以使用其他服务器块来添加其他站点。
Nginx 页面重定向
您可以使用重写代码快速管理 301(永久)或 302(临时)重定向:
Location /index.html {
rewrite ^/oldURL$ https://www.gworg.com/newURL redirect;
}
大多数情况下,位置将是index.html,但您可以指定任何路径/模式。
请注意,该rewrite
命令只能用于 301 或 302 重定向。
如何使用 Nginx 重定向域
如果您已从虚扩展名(如 .biz 或 .net)更改为标准的 .com地址,这将非常有用。它还可以用于从旧域名重定向到新域名。
server {
listen 80;
listen 443 ssl;
server_name www.gworg.com;
return 301 $scheme://www.gworg.cn$request_uri;
}
在大多数情况下,该return
命令优于重写命令。
从 www 网站重定向到非 www 网站
此过程类似于标准页面重定向:
server {
server_name www.gworg.com;
return 301 $scheme://gworg.com$request_uri;
}
重定向流量的原因
将HTTP流量重定向到HTTPS有多种原因。您可能需要:
- 强制建立更安全的加密连接。
- 保留具有良好SEO排名的页面,但将其流量发送到新页面。
- 通知并临时将流量发送到“维护中”页面。
- 永久地将流量从一个网站发送到另一个网站,即在公司合并之后。
结论
现在您知道如何在Nginx中将HTTP重定向到HTTPS。通过编辑配置文件,您可以将流量从特定目的地发送到不同的站点,并强制使用Nginx SSL证书。这有助于您安全地管理对网站的更改,而不会中断用户体验。
如何在 Nginx中将HTTP重定向到HTTPS
原文:https://www.cnblogs.com/Gworg/p/15306698.html