Linux 环境 Nginx 安装:新手也能轻松搞定
Nginx(发音为 “engine-x”)是一款高性能的开源 Web 服务器、反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器。它以其卓越的性能、稳定性、丰富的功能集和低资源消耗而广受欢迎,广泛应用于互联网领域的各个角落。
对于初次接触 Linux 和 Web 服务器的开发者或系统管理员来说,安装 Nginx 可能看起来有些复杂。但实际上,借助现代 Linux 发行版的包管理器,这个过程可以非常简单。本文将为您提供一份详细的新手友好型 Nginx 安装指南,涵盖主流 Linux 发行版(如 Ubuntu/Debian 和 CentOS/RHEL)。
前提条件
在开始安装之前,请确保您具备以下条件:
- 一台运行 Linux 操作系统的服务器或虚拟机: 本教程将以 Ubuntu 和 CentOS 为例。
- 具有
sudo权限的用户账户: 安装和配置系统服务通常需要管理员权限。 - 基本的 Linux 命令行操作知识: 例如,如何打开终端、执行命令等。
- 服务器的公共 IP 地址: 用于在浏览器中验证 Nginx 是否成功启动。
一、安装 Nginx
Nginx 可以通过各个 Linux 发行版提供的包管理器进行安装,这是最推荐和最便捷的方式。
1. 在 Ubuntu/Debian 系统上安装 Nginx
Ubuntu 和 Debian 系列的 Linux 系统使用 apt 包管理器。
步骤 1:更新软件包列表
在安装任何新软件之前,始终建议先更新系统的软件包列表,以确保您能获取到最新版本的软件包信息。
bash
sudo apt update
步骤 2:安装 Nginx
Nginx 在 Ubuntu 的默认软件仓库中是可用的,因此您可以直接使用 apt install 命令进行安装。
bash
sudo apt install nginx
步骤 3:验证 Nginx 安装
安装完成后,Nginx 服务通常会根据系统配置自动启动。您可以通过以下两种方式验证它是否成功运行:
- 命令行验证: 检查 Nginx 服务的运行状态。
bash
sudo systemctl status nginx
如果看到active (running)字样,则表示 Nginx 正在运行。 - 浏览器验证: 打开您的 Web 浏览器,在地址栏中输入您的服务器的公共 IP 地址(例如
http://192.168.1.100或http://your_domain_name)。如果一切顺利,您将看到 Nginx 的默认欢迎页面,通常显示 “Welcome to nginx!”。
2. 在 CentOS/RHEL 系统上安装 Nginx
CentOS 和 RHEL(及其衍生版如 Fedora)系统使用 yum 或较新的 dnf 包管理器。Nginx 通常不在这些系统的默认仓库中,因此需要先添加 EPEL (Extra Packages for Enterprise Linux) 仓库。
步骤 1:安装 EPEL 仓库
运行以下命令来安装 EPEL 仓库:
“`bash
对于 CentOS/RHEL 7 及更早版本
sudo yum install epel-release -y
对于 CentOS/RHEL 8 / Fedora 及更高版本,也可以使用 dnf
sudo dnf install epel-release -y
“`
步骤 2:安装 Nginx
安装 EPEL 仓库后,现在您可以使用 yum 或 dnf 安装 Nginx 了:
“`bash
对于使用 yum 的系统
sudo yum install nginx -y
对于使用 dnf 的系统
sudo dnf install nginx -y
“`
步骤 3:验证 Nginx 安装
在 CentOS/RHEL 系统中,Nginx 安装后通常不会自动启动。您需要手动启动它并设置开机自启。
- 启动 Nginx 服务:
bash
sudo systemctl start nginx - 设置 Nginx 开机自启:
bash
sudo systemctl enable nginx
这会确保您的服务器在重启后 Nginx 服务也能自动运行。 - 命令行验证: 检查 Nginx 服务的运行状态。
bash
sudo systemctl status nginx
确认服务状态为active (running)。 - 浏览器验证: 同样,在浏览器中输入您的服务器的公共 IP 地址,您应该能看到 Nginx 的欢迎页面。
二、配置防火墙
为了让外部用户能够访问您的 Nginx Web 服务器,您需要确保系统的防火墙允许 HTTP (80 端口) 和 HTTPS (443 端口) 流量通过。
1. Ubuntu/Debian (使用 UFW)
Ubuntu 默认使用 UFW (Uncomplicated Firewall) 作为其防火墙管理工具。
步骤 1:检查 UFW 状态
bash
sudo ufw status
如果 UFW 处于非活动状态,您需要先启用它。
步骤 2:允许 Nginx 流量
Nginx 在 UFW 中注册了几个预定义的应用程序配置文件,方便您快速配置:
Nginx HTTP: 仅允许 80 端口 (HTTP) 流量。Nginx HTTPS: 仅允许 443 端口 (HTTPS) 流量。Nginx Full: 允许 80 和 443 端口 (HTTP 和 HTTPS) 流量。
通常,如果您只提供 HTTP 服务,选择 Nginx HTTP;如果未来可能提供 HTTPS,选择 Nginx Full 更为方便。
“`bash
允许 HTTP 流量
sudo ufw allow ‘Nginx HTTP’
如果您也需要 HTTPS,可以允许 HTTP 和 HTTPS 流量
sudo ufw allow ‘Nginx Full’
“`
步骤 3:启用 UFW (如果未启用)
如果 UFW 之前处于非活动状态,请启用它:
bash
sudo ufw enable
系统可能会提示您确认,输入 y 并回车。
步骤 4:再次检查 UFW 状态
确认规则已添加并生效:
bash
sudo ufw status
2. CentOS/RHEL (使用 firewalld)
CentOS 和 RHEL 系统通常使用 firewalld。
步骤 1:检查 firewalld 状态
bash
sudo systemctl status firewalld
确保 firewalld 服务正在运行。如果未运行,请启动它:sudo systemctl start firewalld,并设置开机自启:sudo systemctl enable firewalld。
步骤 2:允许 HTTP 和 HTTPS 服务
firewalld 允许您通过服务名称而非端口号来添加规则,这更具可读性。
“`bash
允许 HTTP 流量(80 端口)
sudo firewall-cmd –permanent –add-service=http
允许 HTTPS 流量(443 端口),如果需要的话
sudo firewall-cmd –permanent –add-service=https
``–permanent` 选项表示规则在防火墙重启后依然有效。
步骤 3:重新加载 firewalld 配置
应用新的防火墙规则:
bash
sudo firewall-cmd --reload
步骤 4:验证服务是否已添加
bash
sudo firewall-cmd --list-all
在输出中,您应该能看到 services: http https(如果都添加了)或者 services: http。
三、管理 Nginx 服务常用命令
掌握如何管理 Nginx 服务对于日常维护至关重要。
- 启动 Nginx:
bash
sudo systemctl start nginx - 停止 Nginx:
bash
sudo systemctl stop nginx - 重启 Nginx: (完全停止并重新启动服务,可能会导致短暂的服务中断)
bash
sudo systemctl restart nginx - 重新加载 Nginx 配置: (在不中断服务的情况下应用配置更改,推荐在修改配置文件后使用)
bash
sudo systemctl reload nginx - 检查 Nginx 状态:
bash
sudo systemctl status nginx - 设置 Nginx 开机自启:
bash
sudo systemctl enable nginx - 禁用 Nginx 开机自启:
bash
sudo systemctl disable nginx - 检查 Nginx 配置文件语法: (在重新加载或重启 Nginx 前,检查配置文件的语法错误非常重要)
bash
sudo nginx -t
如果输出显示syntax is ok和test is successful,则表示配置文件没有语法错误。
四、Nginx 基本配置概述
Nginx 的强大之处在于其灵活的配置文件。了解其基本结构对于后续的网站托管和反向代理配置至关重要。
-
主配置文件位置:
- Ubuntu/Debian:
/etc/nginx/nginx.conf - CentOS/RHEL:
/etc/nginx/nginx.conf
- Ubuntu/Debian:
-
网站配置文件(虚拟主机)位置:
- Ubuntu/Debian:
/etc/nginx/sites-available/: 存放所有可用的网站配置文件。/etc/nginx/sites-enabled/: 存放已启用的网站配置。通常通过在sites-available目录中的文件创建软链接到此目录来启用。
- CentOS/RHEL: 通常在
/etc/nginx/conf.d/目录下创建以.conf结尾的单独配置文件。
- Ubuntu/Debian:
Nginx 配置文件的基本结构示例
一个典型的 nginx.conf 文件包含几个主要块:
“`nginx
全局块:配置影响 Nginx 服务器整体运行的指令
user nginx; # 运行 Nginx 进程的用户
worker_processes auto; # 工作进程数,推荐设置为 CPU 核心数或 ‘auto’
error_log /var/log/nginx/error.log warn; # 错误日志路径和级别
pid /var/run/nginx.pid; # Nginx 主进程的 PID 文件
events {
# events 块:配置影响 Nginx 服务器或与用户的网络连接的特性
worker_connections 1024; # 每个工作进程的最大连接数
# use epoll; # 在 Linux 系统上,epoll 是高性能事件驱动的首选模型
}
http {
# http 块:HTTP 服务器的核心配置,可以包含多个 server 块
# 配置代理、缓存、日志定义、Gzip 压缩等绝大多数 HTTP 相关功能
include /etc/nginx/mime.types; # 引入 MIME 类型映射文件
default_type application/octet-stream; # 默认的文件类型
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; # 定义日志格式
access_log /var/log/nginx/access.log main; # 访问日志路径和格式
sendfile on; # 开启高效文件传输模式
keepalive_timeout 65; # 客户端连接的超时时间
# gzip on; # 开启 Gzip 压缩,可以提高传输效率
# 引入外部配置文件,通常用于网站的虚拟主机配置
include /etc/nginx/conf.d/*.conf; # CentOS/RHEL 常用
# include /etc/nginx/sites-enabled/*; # Ubuntu/Debian 常用
server {
# server 块:定义一个虚拟主机(网站)的配置
listen 80; # 监听端口,HTTP 默认是 80
server_name localhost; # 域名或 IP 地址,可以设置为您的实际域名
#charset koi8-r; # 字符集设置
location / {
# location 块:根据 URL 路径匹配请求并进行处理
root /usr/share/nginx/html; # 网站的根目录,即静态文件存放的位置
index index.html index.htm; # 默认的索引文件,当访问目录时 Nginx 会尝试查找这些文件
}
# 错误页面配置
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# 其他常见的配置,例如反向代理、PHP-FPM 配置等,通常会在 location 块中完成
# 例如,配置 PHP 应用:
# location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000; # 假设 PHP-FPM 运行在 9000 端口
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
# }
}
# 可以在这里添加更多的 server 块来配置其他网站或服务
}
“`
小贴士:
- 在修改任何 Nginx 配置文件后,务必先运行
sudo nginx -t检查语法,然后使用sudo systemctl reload nginx命令重新加载配置,以使更改生效。 - 默认的网站根目录通常是
/usr/share/nginx/html(CentOS/RHEL) 或/var/www/html(Ubuntu/Debian),您可以在location块中的root指令进行修改。
五、测试您的 Nginx
安装并启动 Nginx 后,最重要的步骤就是进行测试以确认一切正常运行。
- 浏览器访问:
打开您的 Web 浏览器,在地址栏中输入您服务器的公共 IP 地址。如果安装和防火墙配置都正确,您应该会看到 Nginx 的默认欢迎页面。
恭喜您!至此,您已经成功在 Linux 环境中安装并运行了 Nginx。现在您可以开始配置您的网站、设置反向代理、负载均衡或利用 Nginx 的其他强大功能来构建您的 Web 服务了。随着您对 Nginx 的深入了解,您会发现它是一个极其灵活和高效的工具。