如何在 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