如何设置和使用 NGINX 作为反向代理, 如何在 Nginx 中将 HTTP 重定向到 HTTPS, How to Set up & Use NGINX as a Reverse Proxy, How to Redirect HTTP to HTTPS in Nginx

 

什么是反向代理?

标准代理服务器代表客户端工作,通常通过提供隐私或过滤内容。反向代理代表服务器工作,拦截流量并将其路由到单独的服务器。

您可能想要安装反向代理有几个原因。主要原因之一是隐私。

如果您有多个服务器,反向代理可以帮助平衡服务器之间的负载并提高性能。由于反向代理为客户端提供单点联系,它可以跨多个服务器集中记录和报告。

Nginx 可以通过快速提供静态内容并将动态内容请求传递给 Apache 服务器来提高性能。

本指南将帮助您在系统上安装和配置 Nginx 反向代理。

如何设置和使用 NGINX 作为反向代理, 如何在 Nginx 中将 HTTP 重定向到 HTTPS, How to Set up & Use NGINX as a Reverse Proxy, How to Redirect HTTP to HTTPS in Nginx
如何设置和使用 NGINX 作为反向代理, 如何在 Nginx 中将 HTTP 重定向到 HTTPS, How to Set up & Use NGINX as a Reverse Proxy, How to Redirect HTTP to HTTPS in Nginx

先决条件

  • 带有 Apache、PHP 和防火墙的 Linux 服务器
  • 使用sudo访问root 用户
  • Linux 命令行或终端(Ctrl – Alt – T用于 Ubuntu,Alt – F2用于 CentOS)
  • 包管理器(例如 APT)

 

设置 Nginx 反向代理

 

第 1 步:从默认存储库安装 Nginx

打开终端窗口并输入以下内容:

sudo apt-get update

让包管理器完成刷新软件列表,然后输入以下内容:

sudo apt-get install nginx

允许该过程完成。

注意:这是在 CentOS或Ubuntu上安装 Nginx的最简单方法,但它可能无法加载最新的稳定版本。继续第 2 步以从 Nginx 软件存储库添加和安装。

 

第 2 步(可选):从官方存储库安装 Nginx

添加安全密钥

在终端窗口中,输入以下内容:

sudo wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key

这会下载 Nginx 的签名密钥,以验证您正在下载正版软件。

 

打开sources.list文件进行编辑

在终端中,输入以下内容:

sudo vi /etc/apt/sources.list

如何设置和使用 NGINX 作为反向代理, 如何在 Nginx 中将 HTTP 重定向到 HTTPS, How to Set up & Use NGINX as a Reverse Proxy, How to Redirect HTTP to HTTPS in Nginx
如何设置和使用 NGINX 作为反向代理, 如何在 Nginx 中将 HTTP 重定向到 HTTPS, How to Set up & Use NGINX as a Reverse Proxy, How to Redirect HTTP to HTTPS in Nginx

 

将 Nginx 源添加到存储库列表

/etc/apt/sources.list在刚刚打开的文件中输入以下行:

deb https://nginx.org/packages/mainline/debian/ <CODENAME> nginx

deb-src https://nginx.org/packages/mainline/debian/ <CODENAME> nginx

替换<CODENAME>为您的 Debian 发行版的代号。

保存文件并退出

如何设置和使用 NGINX 作为反向代理, 如何在 Nginx 中将 HTTP 重定向到 HTTPS, How to Set up & Use NGINX as a Reverse Proxy, How to Redirect HTTP to HTTPS in Nginx
如何设置和使用 NGINX 作为反向代理, 如何在 Nginx 中将 HTTP 重定向到 HTTPS, How to Set up & Use NGINX as a Reverse Proxy, How to Redirect HTTP to HTTPS in Nginx

注意: Nginx 开发人员为不同的 Linux 发行版维护不同的目录。本指南建议安装主线支持的版本。与大多数软件一样,还有更新但未经测试的软件包。请参阅适用于您的发行版的特定软件包的文档

 

安装最新版本的 Nginx

要安装最新版本的 Nginx,请使用以下命令:

sudo apt-get remove nginx-common
sudo apt-get update
sudo apt-get install nginx

 

第 3 步:启动 Nginx 并配置为在重启时启动

启动 Nginx:

sudo systemctl start nginx

 

要启用 Nginx:

sudo systemctl enable nginx

 

要检查 Nginx 是否正在运行:

sudo systemctl status nginx

 

输出应显示服务处于活动状态(正在运行),如下图所示:

如何设置和使用 NGINX 作为反向代理, 如何在 Nginx 中将 HTTP 重定向到 HTTPS, How to Set up & Use NGINX as a Reverse Proxy, How to Redirect HTTP to HTTPS in Nginx
如何设置和使用 NGINX 作为反向代理, 如何在 Nginx 中将 HTTP 重定向到 HTTPS, How to Set up & Use NGINX as a Reverse Proxy, How to Redirect HTTP to HTTPS in Nginx

 

第 4 步:取消链接默认配置文件

在终端中,输入以下内容:

sudo unlink /etc/nginx/sites-enabled/default

 

第 5 步:创建新的配置文件

要创建新的配置文件,请输入:

cd /etc/nginx/sites-available/
sudo vi custom_server.conf

替换custom_server为对您有意义的名称。在新文件中,输入:

server {

listen 80;

location / {

proxy_pass http://my_server;

}

}

这是一个非常基本的 Nginx 反向代理示例。Nginx 设置为侦听端口 80 上的所有流量以获取所有流量。

proxy_pass命令将端口 80 上的所有流量定向到http://my_server. 只需更改http://my_server您选择的位置,Nginx 就会拦截客户端请求并将它们路由到您指定的位置。完成后,保存文件并退出。

 

第 6 步:链接并激活配置文件

要激活新的 Nginx 文件,请输入:

ln -s /etc/nginx/sites-available/custom_server.conf 
/etc/nginx/sites-enabled/custom_server.conf

像往常一样,替换custom_server为您在步骤 5 中创建的配置文件的名称。

 

第 7 步:测试并重启 Nginx

测试 Nginx:

sudo service nginx configtest

 

重启Nginx :

sudo service nginx restart

 

可选的 Nginx 配置选项

代理缓冲区

默认情况下,Nginx 为其代理的服务器缓冲流量。缓冲区提高了服务器性能,因为在客户端完成发送完整响应之前不会发送服务器响应。

要关闭缓冲区,请打开步骤 5 中的配置文件。在location/section下,添加以下内容:

proxy_buffering off;

请求标头

标头提供有关所发出请求或客户端的服务器信息。

Nginx 重新定义了两个标头字段:host配置为$proxy_hostconnection配置为close。如果您使用这些标头,请务必更改配置文件中的行为。

如果任何标头字符串为空,Nginx 会简单地删除这些字段。

要更改 Nginx 处理石南花的方式,请在配置文件中使用以下命令:

location / {

proxy_set_header Host $host;

}

这个例子告诉 Nginx 设置host变量$host

要防止将标头字段传递给代理服务器,请使用空字符串,如下所示:

location / {

proxy_set_header header-variable "";

}

 

负载均衡

您可以使用配置文件将流量路由到多个服务器。要使用此配置,您的配置文件将类似于此示例:

http   {

server   {

proxy_pass http://my_server

}

}

换句话说,HTTP 配置超出了步骤 5 的服务器配置。

要为一组服务器创建名称,请使用以下upstream命令:

http   {

upstream server_group   {

server my.server1.com weight=3;

server my.server2.com;

}

server  {

location / {

proxy_pass http://server_group;

}

}

}

 

这个名称需要两台服务器 –my.server1.com并且my.server2.com– 并将它们捆绑在一起。Nginx 在 name 下代理那组服务器http://server_group。您可以随意重命名它们。

此示例使用weight命令将三个请求路由到my.server1.com,然后将 1 个请求路由到my.server2.com。这是在服务器之间手动平衡客户端负载的一种选择。另一种方法是简单地省略任何指定,其中 Nginx 将在列出的服务器之间均匀地循环请求。

注意:了解有关负载平衡及其工作原理的更多信息。

 

结论

现在您知道如何设置 Nginx 反向代理了。

它是用于多服务器环境的出色工具,可创建统一的客户端体验。它也可以用于更简单的任务,例如保持单个服务器匿名。

 

 

介绍

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

本指南将向您展示如何使用 Nginx 将 HTTP 重定向到 HTTPS。

如何设置和使用 NGINX 作为反向代理, 如何在 Nginx 中将 HTTP 重定向到 HTTPS, How to Set up & Use NGINX as a Reverse Proxy, How to Redirect HTTP to HTTPS in Nginx
如何设置和使用 NGINX 作为反向代理, 如何在 Nginx 中将 HTTP 重定向到 HTTPS, How to Set up & Use NGINX as a Reverse Proxy, How to Redirect HTTP to HTTPS in Nginx

先决条件

  • 运行 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 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;

}

此代码块将设置两个网站my_app.commy_website.com以仅接受 SSL 连接。您可以使用其他服务器块添加其他站点。

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

 

Nginx 页面重定向

您可以使用重写代码快速管理 301(永久)或 302(临时)重定向:

Location /index.html {

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

}

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

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

 

如何使用 Nginx 重定向域

如果您已从虚名扩展名(如 .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命令优于 rewrite 命令。

 

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

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

server {

    server_name www.new_company.com;

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

}

 

重定向流量的原因

将 HTTP 流量重定向到 HTTPS 有几个原因。您可能需要:

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

注意:如果您在浏览器中看到错误 ERR_TOO_MANY_REDIRECTS,则表示浏览器卡在重定向循环中。阅读我们的指南如何排除 ERR_TOO_MANY_REDIRECTS以了解更多信息。

 

结论

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

 

 

本文:如何设置和使用 NGINX 作为反向代理, 如何在 Nginx 中将 HTTP 重定向到 HTTPS, How to Set up & Use NGINX as a Reverse Proxy, How to Redirect HTTP to HTTPS in Nginx

Loading

Add a Comment

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.