如何在Nginx中将HTTP重定向到HTTPS?分步指南

2021年11月22日17:52:36 发表评论 1,633 次浏览

介绍

Nginx(发音为“Engine-X”)是一个基于 Linux 的 Web 服务器和代理应用程序。Nginx 是用于重定向和管理 Web 流量的强大工具。它可以轻松配置为将未加密的 HTTP Web 流量重定向到加密的 HTTPS 服务器。

如何在Nginx中将HTTP重定向到HTTPS本指南将向你展示如何使用 Nginx 将 HTTP 重定向到 HTTPS,包括详细的Nginx将HTTP重定向到HTTPS示例

先决条件

  • 运行 Nginx 的 Linux 服务器
  • 具有sudo 权限的用户帐户 
  • 远程登录 Web 服务器(可选,仅当你不直接在 Web 服务器上工作时才需要)
  • 访问终端/命令行(Ctrl-Alt-T 或 Ctrl-Alt-F2)

HTTP 到 HTTPS 重定向

Nginx如何将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中将HTTP重定向到HTTPS?打开Nginx配置文件进行编辑,然后插入如下代码:

server {

    listen 80 default_server;


    server_name _;


    return 301 https://$host$request_uri;

}

在以上的Nginx将HTTP重定向到HTTPS示例中,以下是命令的细分:

  • Listen 80:这会指示系统捕获端口 80 上的所有 HTTP 流量
  • Server_name _;: 这将匹配任何主机名
  • Return 301:这告诉浏览器(和搜索引擎)这是一个永久重定向
  • https://$host$request_uri:这是一个短代码,用于指定用户输入的任何内容的 HTTPS 版本

编辑后,HTTP 默认服务器的所有流量都重定向到 HTTPS。

注:这应该是唯一的服务器模块上的80端口侦听(服务器块是在Nginx的配置代码单元它是由一个名字和大括号标记。)

重定向特定站点

Nginx如何将HTTP重定向到HTTPS?你可能有多个服务器,但只有其中一些可能需要 HTTPS。在服务器块中指定服务器名称以重定向选定的流量:

server {

    listen 80 default_server;


    server_name my_app.com;


    return 301 https://my_app.com$request_uri;

}

将名称my_app.com替换为你要重定向的服务器的名称。你可能还想通过添加另一个服务器块来添加其他站点。只需复制代码,然后切换服务器名称即可。

仅接受 SSL 连接

添加此代码以确保服务器仅接受端口 443 上的 SSL 连接:

server {

    listen 443 ssl default_server;

    server_name my_app.com;

}


server {

    listen 443 ssl;

    server_name my_website.com;

}

Nginx将HTTP重定向到HTTPS示例?此代码块将设置两个网站my_app.commy_website.com仅接受 SSL 连接。你可以使用其他服务器块来添加其他站点。

注意: Let's Encrypt 是一个免费的证书颁发机构,允许你在 NGINX 服务器上设置 SSL/TLS 加密。查看我们关于如何设置 Let's Encrypt 以保护你的 Nginx 服务器的文章。

Nginx 页面重定向

Nginx如何将HTTP重定向到HTTPS?你可以使用重写代码快速管理 301(永久)或 302(临时)重定向:

Location /index.html {

       rewrite ^/oldURL$ https://www.your_domain.com/newURL redirect;

}

大多数情况下,位置将是index.html,但你可以指定任何路径/模式。

请注意,该rewrite命令只能用于 301 或 302 重定向。

如何使用 Nginx 重定向域

如何在Nginx中将HTTP重定向到HTTPS?如果你已从虚扩展名(如 .biz 或 .net)更改为标准的 .com 地址,这将非常有用。它还可以用于从旧域名重定向到新域名。

server {

    listen 80;

    listen 443 ssl;

    server_name www.old_company.com;

    return 301 $scheme://www.new_company.com$request_uri;

}

在大多数情况下,该return命令优于重写命令。

从 www 网站重定向到非 www 网站

此过程类似于标准页面重定向:

server {

    server_name www.new_company.com;

    return 301 $scheme://new_company.com$request_uri;

}

重定向流量的原因

将 HTTP 流量重定向到 HTTPS 的原因有很多。你可能需要:

  • 强制建立更安全的加密连接。
  • 保留具有良好 SEO 排名的页面,但将其流量发送到新页面。
  • 通知并临时将流量发送到“维护中”页面。
  • 永久地将流量从一个网站发送到另一个网站,即在公司合并之后。

结论

如何在Nginx中将HTTP重定向到HTTPS?现在你知道如何在 Nginx 中将 HTTP 重定向到 HTTPS。通过编辑配置文件,你可以将流量从特定目的地发送到不同的站点,并强制使用Nginx SSL 证书。这有助于你安全地管理对网站的更改,而不会中断用户体验。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: