在这个信息呈爆炸式增长的时代,每个人都在不懈地探寻更为快捷、安全的信息分享与获取途径。我是 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 在多个服务器之间实现负载均衡,它无疑都是任何系统管理员工具箱中不可或缺的重要工具。