本文将详细介绍在 Ubuntu 和 CentOS 两大主流 Linux 发行版上安装与配置 Nginx 的方法,涵盖服务管理、配置文件定位、防火墙端口配置,并演示如何将 Nginx 与 Tomcat 服务器集成以实现负载均衡。
Ubuntu 系统安装 Nginx
在 Ubuntu 系统中,Nginx 软件包位于默认的软件仓库中,安装过程非常简便。
首先,更新本地软件包索引:
sudo apt update
随后,执行安装命令:
sudo apt install nginx
安装完成后,可以通过以下命令验证 Nginx 版本,确认安装成功:
nginx -v
Nginx 服务管理
安装后,可以使用 systemctl 命令来管理 Nginx 服务:
- 启动 Nginx 服务
sudo systemctl start nginx
- 重新加载配置(不中断服务)
sudo systemctl reload nginx
- 停止 Nginx 服务
sudo systemctl stop nginx
- 检查 Nginx 进程是否运行
ps -aux | grep nginx
测试访问与配置文件定位
服务启动后,可通过浏览器访问 http://<服务器IP>(默认使用80端口)来测试 Nginx 是否正常工作。
若需修改默认端口等配置,需要找到 Nginx 的主配置文件 nginx.conf。可以通过以下方式定位:
-
查找 Nginx 主进程路径,其所在目录通常是安装目录。
ps -ef | grep nginx
返回结果中类似 nginx: master process /usr/sbin/nginx 的路径即为 Nginx 主程序位置。
-
查找配置文件路径,使用 -t 测试命令会显示主配置文件的路径。
sudo nginx -t
输出通常会显示:nginx: configuration file /etc/nginx/nginx.conf syntax is ok,这里的 /etc/nginx/nginx.conf 就是主配置文件。
CentOS 系统安装 Nginx
在 CentOS 系统上,建议添加 Nginx 官方源进行安装,以获得较新的稳定版本。
- 添加 Nginx 官方 Yum 源:
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- 通过 Yum 安装 Nginx:
sudo yum install -y nginx
安装后,使用 whereis nginx 命令可以查看到 Nginx 相关的所有路径,其中 /etc/nginx 为核心配置目录。
进入该目录,查看 nginx.conf 文件,你会发现它采用了模块化配置的方式,通过 include 指令引入了 /etc/nginx/conf.d/ 目录下的其他配置文件。这种结构在 Linux 运维/DevOps 实践中非常常见,便于管理。

CentOS 下 nginx.conf 主配置文件通常会引用其他目录的配置
进入 /etc/nginx/conf.d/ 目录,可以看到默认的服务器配置 default.conf,在这里可以清晰地配置服务器监听的端口、地址、网站根目录(root)以及默认首页等关键参数。

conf.d 目录下的配置文件,用于设置端口、服务器名、根目录等
在 CentOS 中,可以直接使用 Nginx 二进制文件管理服务:
nginx:启动 Nginx
nginx -s stop:立即停止 Nginx
nginx -s quit:优雅停止(处理完当前请求后停止)
如需卸载,可执行:
sudo yum remove nginx
解决 CentOS 下无法访问 80 端口问题
在 CentOS 系统中,防火墙默认会阻止外部对 80 端口的访问。你需要配置防火墙规则以放行该端口。
- 检查防火墙状态:
sudo firewall-cmd --state
如果未运行,需先启动防火墙:
sudo systemctl start firewalld
- 查看当前已开放的端口:
sudo firewall-cmd --list-ports
- 永久性添加 80 端口(TCP协议)到防火墙规则:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
- 重新加载防火墙配置,使规则立即生效:
sudo firewall-cmd --reload
执行完上述步骤后,外部网络通常就能正常访问服务器的 80 端口了。
Nginx 与 Tomcat 集成实现负载均衡
Nginx 常作为反向代理服务器,与后端的 Java 应用服务器(如 Tomcat)集成,实现请求分发和负载均衡。
假设我们有两个 Tomcat 实例,分别运行在 8080 和 8081 端口,Nginx 监听 80 端口。架构如下图所示:

Nginx 作为反向代理,将请求分发给后端的多个 Tomcat 实例
操作步骤:
- 分别启动两个 Tomcat 服务器(进入各自的
bin 目录):
./startup.sh
-
配置 Nginx。编辑 Nginx 的配置文件(例如 /etc/nginx/conf.d/upstream.conf 或直接在 nginx.conf 的 http 块中添加),定义一个上游服务器组(upstream)并配置代理规则。
http {
# 定义名为 tomcat_cluster 的服务器组
upstream tomcat_cluster {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 80;
server_name localhost;
location / {
# 将所有请求代理到 tomcat_cluster 服务器组
proxy_pass http://tomcat_cluster;
# 可选:设置一些代理头信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
- 检查配置语法并重新加载 Nginx:
sudo nginx -t # 测试配置文件语法
sudo nginx -s reload # 或 systemctl reload nginx (Ubuntu) / nginx -s reload (CentOS直接运行)
配置完成后,访问 Nginx 的 80 端口,请求会被 Nginx 按照默认的轮询(round-robin)策略随机分发到后端的 Tomcat1(8080端口)或 Tomcat2(8081端口),从而初步实现负载均衡。更多高级策略(如权重、IP哈希等)可以在 upstream 模块中进行配置,这属于 数据库/中间件 性能调优的范畴。