本教程将以 Ubuntu 22.04 为例,因为它非常流行且命令相对简单,对于其他发行版(如 CentOS),主要包管理命令和配置文件路径会有所不同,但核心概念和步骤是相通的。

目录
- 准备工作
- 第一步:更新系统包
- 第二步:安装 Nginx
- 第三步:启动并设置 Nginx 开机自启
- 第四步:检查 Nginx 服务状态
- 第五步:调整防火墙(重要!)
- 第六步:验证 Nginx 是否运行
- 第七步:理解 Nginx 的核心配置文件
- 第八步:部署你的第一个网站(创建虚拟主机)
- 第九步:配置域名(可选)
- 第十步:常用 Nginx 命令
- 常见问题与解决方案
第一步:准备工作
在开始之前,你需要:
- 一台已经安装好 Linux(如 Ubuntu)的服务器。
- 一个具有
sudo权限的非 root 用户,使用 root 用户操作有安全风险,所以最佳实践是使用sudo。
第二步:更新系统包
确保你的系统所有包都是最新的,打开终端,执行以下命令:
sudo apt update sudo apt upgrade -y
第三步:安装 Nginx
使用 apt 包管理器来安装 Nginx。
sudo apt install nginx -y
安装过程会自动下载 Nginx 主程序及其依赖项。

第四步:启动并设置 Nginx 开机自启
安装完成后,Nginx 不会自动启动,你需要手动启动它,并设置它随系统开机而自动运行。
# 启动 Nginx 服务 sudo systemctl start nginx # 设置 Nginx 开机自启 sudo systemctl enable nginx
第五步:检查 Nginx 服务状态
你可以使用 systemctl 命令来检查 Nginx 是否正在正常运行。
sudo systemctl status nginx
如果看到绿色的 active (running) 字样,说明 Nginx 已经成功启动并正在运行,按 q 键退出状态界面。
第六步:调整防火墙(重要!)
新安装的 Nginx 会开放两个端口:

- 80 (HTTP): 用于普通的网页浏览。
- 443 (HTTPS): 用于加密的网页浏览。
如果你的服务器开启了防火墙(如 ufw),你需要允许这些端口的流量通过。
检查防火墙状态
sudo ufw status
如果显示 Status: active,说明防火墙已开启。
允许 Nginx 流量 你可以允许所有 Nginx 的连接,这最简单。
sudo ufw allow 'Nginx Full'
'Nginx Full' 规则同时允许 HTTP (80) 和 HTTPS (443) 端口。
重新加载防火墙
sudo ufw reload
第七步:验证 Nginx 是否运行
这是最令人兴奋的一步!打开你的浏览器,输入你的服务器公网 IP 地址。
http://你的服务器公网IP地址
如果你能看到一个 "Welcome to nginx!" 的欢迎页面,恭喜你,你的 Nginx 服务器已经成功搭建并运行了!
如何找到你的服务器公网 IP? 在服务器终端中运行:
curl ifconfig.me # 或者 curl icanhazip.com
第八步:理解 Nginx 的核心配置文件
为了更好地管理 Nginx,你需要了解它的文件结构。
-
主配置文件:
/etc/nginx/nginx.conf这里包含了全局的 Nginx 配置,如运行用户、工作进程数、日志路径等,通常不建议在这里修改网站相关的配置。
-
网站配置目录:
/etc/nginx/sites-available/- 存放所有网站的虚拟主机配置文件,每个网站(域名)都应该有一个独立的配置文件放在这里。
-
启用的网站配置目录:
/etc/nginx/sites-enabled/- 这个目录下的配置文件实际上是
sites-available目录中文件的符号链接,Nginx 只会加载这个目录下的配置。
- 这个目录下的配置文件实际上是
-
服务器根目录:
/var/www/html/- 这是 Nginx 默认存放网站文件的地方,当你访问默认网站时,它就会读取这个目录下的
index.html文件。
- 这是 Nginx 默认存放网站文件的地方,当你访问默认网站时,它就会读取这个目录下的
第九步:部署你的第一个网站(创建虚拟主机)
我们将创建一个名为 example.com 的虚拟主机,并部署一个静态网站,请将 example.com 替换成你自己的域名。
创建网站根目录
# 创建一个以域名为名的目录 sudo mkdir -p /var/www/example.com/html # 将目录的所有权赋予你的普通用户,避免使用 sudo 操作文件 sudo chown -R $USER:$USER /var/www/example.com/html
$USER 是一个环境变量,会自动替换为当前登录的用户名。
创建一个简单的首页文件
# 创建 index.html 文件 nano /var/www/example.com/html/index.html
粘贴到文件中并保存(在 nano 中按 Ctrl+O 保存,Ctrl+X 退出):
<!DOCTYPE html>
<html>
<head>Welcome to example.com!</title>
<style>
body { width: 60em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Success! The example.com server block is working!</h1>
<p>This is a simple HTML page served from Nginx.</p>
</body>
</html>
创建 Nginx 配置文件 为你的网站创建一个配置文件。
sudo nano /etc/nginx/sites-available/example.com
粘贴到文件中。请务必将 server_name 修改为你的域名或 IP 地址。
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com; # 修改为你的域名
root /var/www/example.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
配置解释:
listen 80;: 监听 80 端口。server_name example.com;: 定义这个虚拟主机处理的域名。root /var/www/example.com/html;: 指定网站文件的根目录。location / { ... }: 定义当访问根路径 时的行为。
启用新的网站配置
创建符号链接,将 sites-available 中的配置文件链接到 sites-enabled 目录。
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
测试并重新加载 Nginx 在重新加载配置之前,务必先测试一下配置文件是否有语法错误。
sudo nginx -t
如果看到下面的输出,说明配置正确:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果配置无误,重新加载 Nginx 以应用新配置:
sudo systemctl reload nginx
测试新网站 在浏览器中访问你的域名:
http://example.com
你应该能看到你刚刚创建的 "Success!" 页面了!
第十步:配置域名(可选)
如果你使用的是真实的域名,你需要将域名的 DNS 记录指向你的服务器 IP 地址。
- 登录你的域名注册商的控制面板(如 GoDaddy, Namecheap 等)。
- 找到 DNS 管理(DNS Management)或解析设置(Zone Editor)。
- 添加一条 A 记录:
- Type:
A - Name: (或者你的域名,如
example.com) - Value: 你的服务器公网 IP 地址
- TTL:
Automatic或1h
- Type:
等待 DNS 生效(通常需要几分钟到几小时),然后再次访问你的域名即可。
第十一节:常用 Nginx 命令
| 命令 | 功能 |
|---|---|
sudo systemctl start nginx |
启动 Nginx 服务 |
sudo systemctl stop nginx |
停止 Nginx 服务 |
sudo systemctl restart nginx |
重启 Nginx 服务(用于应用配置更改) |
sudo systemctl reload nginx |
重新加载配置(不中断现有连接) |
sudo systemctl status nginx |
查看 Nginx 服务状态 |
sudo nginx -t |
测试 Nginx 配置文件语法是否正确 |
sudo tail -f /var/log/nginx/access.log |
实时查看网站的访问日志 |
sudo tail -f /var/log/nginx/error.log |
实时查看 Nginx 的错误日志 |
第十二步:常见问题与解决方案
问题1:浏览器访问 IP 地址,显示 "Welcome to nginx!",但访问域名却显示 404 或无法访问。
- 原因: 通常是防火墙规则没有正确设置,或者域名的 DNS 记录没有指向正确的 IP。
- 解决:
- 检查防火墙:
sudo ufw status,确保允许了 'Nginx Full'。 - 检查 DNS:使用
dig example.com或在线 DNS 查询工具,确认 A 记录是否正确指向你的服务器 IP。 - 检查 Nginx 错误日志:
sudo tail -f /var/log/nginx/error.log,查看是否有权限或配置错误。
- 检查防火墙:
问题2:访问域名时,看到 403 Forbidden 错误。
- 原因: 通常是 Nginx 没有权限读取网站目录下的文件。
- 解决:
- 检查网站目录的所有权:
ls -l /var/www/,确保目录的所有者是运行 Nginx 的用户(通常是www-data),如果不是,请用sudo chown -R www-data:www-data /var/www/your-site修正。 - 检查文件权限:
ls -l /var/www/your-site/html/index.html,确保 Nginx 用户有读取和执行权限。644(文件) 和755(目录) 是合适的权限。
- 检查网站目录的所有权:
问题3:修改配置文件后,sudo systemctl reload nginx 失败。
- 原因: 配置文件有语法错误。
- 解决:
- 运行
sudo nginx -t来定位具体的错误信息。 - 根据错误提示,返回
/etc/nginx/sites-available/目录下的配置文件进行修改。 - 修复后,再次运行
sudo nginx -t,直到测试通过,再执行sudo systemctl reload nginx。
- 运行
恭喜!你已经成功在 Linux 上搭建并配置了一个功能完整的 Nginx 服务器,你可以学习如何配置 SSL 证书(使用 Let's Encrypt)、配置反向代理、配置负载均衡等更高级的主题。
