在 Ubuntu上配置 Nginx 作为反向代理

在这个信息呈爆炸式增长的时代,每个人都在不懈地探寻更为快捷、安全的信息分享与获取途径。我是 xxin,今日,就让我引领大家一同深入探究,如何在 Ubuntu 系统上巧妙配置 Nginx 作为反向代理,从而实现网站性能的大幅跃升,使我们手中的技术不再仅仅局限于工具的范畴,而是真正成为连接世界的坚实桥梁。

一、介绍

Nginx,其读音为“Engine - X”,是一款被广泛应用的 Web 服务器。它具备诸多卓越特性,诸如负载均衡、反向代理、内容缓存以及邮件代理等等。这是一个极为灵活且稳定可靠的解决方案,以其出类拔萃的高性能表现以及高效的资源利用效率而声名远扬。反向代理负责管理入站流量,并将各类请求精准地转发至绑定在特定 TCP 端口的后端服务器,适用于诸如 Node.js、Odoo、Tomcat 等众多应用程序。在本教程中,我们将深入学习在 Ubuntu 系统上如何配置 Nginx 以使其成为反向代理。

二、先决条件

  • 一台成功安装有 Ubuntu 的服务器

首先,我们需要一台配备公网 IP 的云服务器以及一个域名。在此,我们诚挚推荐使用雨云的服务:

雨云优惠注册链接:https://www.rainyun.com/NTE2NDM3_?s=blog

优惠码:NTE2NDM3

使用该优惠码完成注册并绑定微信后,即可获取 50% 折扣券。

完成注册流程后,登录雨云控制台。在“总览”或者“云产品”板块中能够找到云服务器入口。

点击“购买云服务器”按钮,接着选择服务器所在区域,倘若您的域名尚未备案,那么建议选择香港或者美国地区,此处我选择香港地区。

选择以 Ubuntu 作为操作系统的服务器

随后打开 X - shell,运用远程用户名与远程密码进行连接操作。当出现如下内容时,即表示连接成功,便可正式开启后续操作。

  • 具备 SSH root 访问权限或者拥有 sudo 权限的用户。

三、第一步:更新系统包

首先,借助 SSH 登录至 Ubuntu VPS:

# ssh root@IP_Address -p Port_number

将‘IP_Address’以及‘Port_number’替换为服务器实际的 IP 地址与 SSH 端口号。若有必要,可将‘root’替换为 sudo 账户用户名。

成功登录后,务必确保服务器上所安装的所有 Ubuntu 包均处于最新状态。可通过运行如下命令来达成此目的:

# apt update && apt upgrade -y

若进入到如下界面,点击 ok 即可。

四、第二步:安装 Nginx

若 Ubuntu 服务器上尚未安装 Nginx,可运用 apt 命令来进行安装:

# apt install nginx -y

在安装 Nginx 之后,能够使用以下命令检查 Nginx 的版本信息,同时确认 Nginx 服务器是否处于运行状态:

# nginx -v
nginx version: nginx/1.18.0(Ubuntu)

文章撰写之际 Nginx 的版本为 1.18.0。

# systemctl status nginx

若 Nginx 服务器正在运行,应当会接收到类似如下的输出信息。

root@RainYun-85c4qES5:~# systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-11-20 22:31:30 CST; 1min 28s ago
       Docs: man:nginx(8)
    Process: 15970 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 15971 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 16161 (nginx)
      Tasks: 3 (limit: 4678)
     Memory: 4.8M
        CPU: 38ms
     CGroup: /system.slice/nginx.service
             ├─16161 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ├─16163 nginx: worker process
             └─16164 nginx: worker process

Nov 20 22:31:30 RainYun-85c4qES5 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 20 22:31:30 RainYun-85c4qES5 systemd[1]: Started A high performance web server and a reverse proxy server.

此刻,Nginx 已成功安装并运行,我们能够继续着手设置反向代理。

Nginx 安装完成后,可将其配置为反向代理。Nginx 的主要配置文件存储于 /etc/nginx/nginx.conf,而各个服务器配置则位于 /etc/nginx/sites - available/ 目录。

首先,可通过导航至 /etc/nginx/sites - available/ 目录,为反向代理创建一个全新的服务器块:

# cd /etc/nginx/sites - available/

并创建一个新的配置文件,例如 reverse - proxy.conf:

# nano reverse - proxy.conf

添加反向代理配置。以下是一个将流量代理至运行在端口 3000 的后端服务器的示例配置:

nginx
server {
         listen 80;

        server_name yourdomain.com;

        location / {
               proxy_pass <http://localhost:3000>;
               proxy_set_header Host $host;
               proxy_set_header X - Real - IP $remote_addr;
               proxy_set_header X - Forwarded - For $proxy_add_x_forwarded_for;
               proxy_set_header X - Forwarded - Proto $scheme;
       }
}

proxy_pass:此指令明确了应当将请求转发至的后端服务器。

proxy_set_header 指令对于保留客户端信息起着至关重要的作用,这对于日志记录以及后端处理大有裨益。

此刻,可通过在 sites - enabled 目录中创建一个符号链接来启用配置:

# ln - s /etc/nginx/sites - available/reverse - proxy.conf /etc/nginx/sites - enabled/reverse - proxy.conf

测试 Nginx 配置以确保不存在语法错误:

# nginx - t

若测试顺利通过,重启 Nginx 以应用相关更改:

# systemctl restart nginx

现在,打开一个 Web 浏览器并访问 http://yourdomain.com。若所有设置均准确无误,应当能够看到由后端应用程序所提供的内容。

五、第六步:配置 SSL

在为我们的域成功配置反向代理之后,现在便可运用 SSL 来对其进行安全防护,我们还能够借助 Let’s Encrypt 免费获取 SSL 证书。以下是快速操作的具体方法:

安装 Certbot:

# apt install certbot python3 - certbot - nginx

为域获取并安装 SSL 证书:

# certbot --nginx - d yourdomain.com

Certbot 将自动为配置 Nginx 的 SSL 并重新加载服务。可通过访问http:// yourdomain. com 来验证 SSL。

六、结论

至此,我们已成功在 Ubuntu 上配置 Nginx 作为反向代理。无论是将请求代理至单个应用程序,还是借助 Nginx 在多个服务器之间实现负载均衡,它无疑都是任何系统管理员工具箱中不可或缺的重要工具。