1. 核心概念:HTTP 服务与 nginx
- HTTP 服务:是一种让计算机(服务器)通过网络向其他设备(客户端,如手机、电脑)传输网页内容的 “规则”。比如你在浏览器输入
http://xxx
,本质是向服务器发送 “请给我这个网页” 的请求,服务器按 HTTP 规则返回内容。 - nginx:是一款轻量、高效的 “HTTP 服务器软件”,它的核心功能就是按配置接收客户端请求,找到对应的网页文件并返回。除了做 HTTP 服务器,它还能做反向代理、负载均衡等,但入门阶段我们先聚焦 “静态网页部署”。
2. 准备工作:环境与工具
- 操作系统:推荐 Linux 发行版(如 Ubuntu 20.04、CentOS 7/8),以下操作以 Ubuntu 20.04 和 CentOS 7 为例(小白建议先用 Ubuntu,命令更统一)。
- 工具:需要终端(命令行界面),以及文本编辑器(如
nano
、vim
,小白推荐nano
,操作更简单)。 - 前提:确保你的 Linux 系统已联网(需要下载安装 nginx),并拥有管理员权限(用
sudo
命令)。
3. 步骤一:安装 nginx
nginx 是开源软件,Linux 系统通常可以通过官方软件源直接安装,无需手动编译,小白优先用包管理器安装。
1.1 Ubuntu/Debian 系统安装 nginx
Ubuntu/Debian 用apt
包管理器,步骤如下:
-
更新软件源(确保能下载到最新版本):
bash
sudo apt update
(
sudo
表示 “以管理员身份执行”,执行后会提示输入当前用户的密码,输入时屏幕无显示,输完按回车即可) -
安装 nginx:
bash
sudo apt install nginx -y
(
-y
表示 “所有确认项都选 yes”,避免安装过程中需要手动确认) -
验证安装:
安装完成后,输入以下命令查看 nginx 版本,若显示版本号则安装成功:bash
nginx -v
(输出类似
nginx version: nginx/1.18.0 (Ubuntu)
)
1.2 CentOS 系统安装 nginx
CentOS 用yum
(CentOS 7)或dnf
(CentOS 8)包管理器,步骤如下:
- CentOS 7:
bash
# 安装 nginx(CentOS 7 官方源默认包含 nginx) sudo yum install nginx -y # 验证安装 nginx -v
2. nginx 基本结构与配置文件
安装完成后,nginx 的核心文件和目录如下(以 Ubuntu 为例,CentOS 路径类似,主要差异在/etc/nginx
):
路径 / 文件 | 作用 |
---|---|
/etc/nginx/ | nginx 所有配置文件的存放目录 |
/etc/nginx/nginx.conf | nginx 主配置文件(核心配置入口) |
/etc/nginx/sites-available/ | 存放 “可用站点配置” 的目录(需手动创建或启用) |
/etc/nginx/sites-enabled/ | 存放 “已启用站点配置” 的目录(通过软链接指向 sites-available 中的文件) |
/var/www/html/ | nginx 默认的网页文件存放目录(“货架”) |
2.1 主配置文件nginx.conf
解析
打开主配置文件(用nano
编辑,新手友好):
bash
sudo nano /etc/nginx/nginx.conf
文件结构简化如下(#
开头为注释,不影响运行):
nginx
user www-data; # nginx 进程运行的用户(默认即可)
worker_processes auto; # 工作进程数(自动适配 CPU 核心)
error_log /var/log/nginx/error.log; # 错误日志路径(排查问题用)
pid /run/nginx.pid; # 进程 ID 文件路径
events {
worker_connections 1024; # 每个工作进程允许的最大连接数(默认即可)
}
http {
# HTTP 协议相关配置(如文件类型、日志格式等)
include /etc/nginx/mime.types;
default_type application/octet-stream;
# 引入“已启用站点”的配置(关键!站点配置在这里生效)
include /etc/nginx/sites-enabled/*;
}
核心逻辑:http
块中通过include /etc/nginx/sites-enabled/*
引入具体的 “站点配置”,而我们部署网页的关键就是配置 “站点”。
2.2 站点配置:定义 “网页存放规则”
nginx 通过 “server 块”(站点配置)定义 “如何处理请求”。默认情况下,Ubuntu 会在/etc/nginx/sites-available/default
创建一个默认 server 块,我们可以直接修改它。
打开默认站点配置:
bash
sudo nano /etc/nginx/sites-available/default
核心内容解析(简化后):
nginx
server {
listen 80; # 监听端口(HTTP 协议默认端口是 80,浏览器输入网址可省略)
listen [::]:80; # 支持 IPv6 监听(默认保留)
root /var/www/html; # 网页文件存放目录(“货架”路径)
index index.html index.htm; # 默认首页文件名(访问目录时优先找这些文件)
server_name _; # 绑定的域名(_ 表示匹配所有未指定的域名/IP)
# 当请求到来时的处理规则
location / {
try_files $uri $uri/ =404; # 尝试找请求的文件,找不到返回 404 错误
}
}
关键参数说明:
listen 80
:nginx 会 “盯紧” 服务器的 80 端口,所有发送到 80 端口的 HTTP 请求都会被这个 server 块处理。root /var/www/html
:告诉 nginx“网页文件都放在/var/www/html
目录下”,比如请求http://服务器IP/test.html
,nginx 会去找/var/www/html/test.html
。index index.html
:如果请求的是目录(如http://服务器IP/
),nginx 会自动找目录下的index.html
作为首页。
3. 准备网页文件:“摆上货架”
nginx 已经知道 “货架” 在/var/www/html
,接下来需要把 “商品”(网页文件)放进去。我们从最简单的index.html
开始。
3.1 创建基础 HTML 文件
在/var/www/html
目录下创建index.html
:
bash
# 进入网页目录
cd /var/www/html
# 创建并编辑 index.html(用 nano 编辑器)
sudo nano index.html
输入以下内容(简单的网页示例):
html
预览
<!DOCTYPE html>
<html>
<head>
<title>我的第一个网页</title>
</head>
<body>
<h1>Hello, 这是用 nginx 部署的网页!</h1>
<p>我是 Linux 小白,但我成功了!</p>
</body>
</html>
按Ctrl+O
保存(屏幕底部会提示 “File Name to Write: index.html”,直接按回车),再按Ctrl+X
退出编辑器。
3.2 权限检查:确保 nginx 能读取文件
nginx 进程默认以www-data
用户(Ubuntu)或nginx
用户(CentOS)运行,需要确保网页文件和目录对该用户有 “读取权限”。
检查/var/www/html
目录权限:
bash
ls -ld /var/www/html
若输出类似drwxr-xr-x 2 root root ...
,表示目录所有者是root
,但其他用户(包括www-data
)有读取权限(r-x
),无需修改。如果权限不足(如drwx------
),用以下命令开放权限:
bash
sudo chmod -R 755 /var/www/html # 递归设置目录及文件权限(读/执行权限开放给所有用户)
4. 启动 nginx:“打开超市门”
配置和文件都准备好了,需要启动 nginx 服务,让它开始工作。
4.1 启动 nginx
bash
# Ubuntu/Debian 启动命令
sudo systemctl start nginx
# CentOS 启动命令(相同)
sudo systemctl start nginx
4.2 验证 nginx 状态
检查服务是否正常运行:
bash
sudo systemctl status nginx
若输出中包含active (running)
,表示启动成功;若失败,可通过错误日志排查:
bash
cat /var/log/nginx/error.log # 查看错误原因(常见问题:端口被占用、配置错误)
4.3 设置开机自启动(可选)
为了让服务器重启后 nginx 自动运行,执行:
bash
sudo systemctl enable nginx
5. 访问测试:“顾客进店”
nginx 启动后,即可通过浏览器访问网页。需要知道服务器的 “地址”(IP 地址),即安装了 nginx 的 Linux 机器的 IP。
5.1 查看服务器 IP 地址
在 Linux 终端输入以下命令查看 IP(以 Ubuntu 为例):
bash
ip addr show
找到类似inet 192.168.1.100/24
的行,192.168.1.100
就是服务器的局域网 IP(如果服务器有公网 IP,也可以用公网 IP 访问)。
5.2 本地访问(服务器自己访问自己)
在服务器的浏览器(如果有图形界面)输入http://localhost
或http://127.0.0.1
,会看到我们创建的index.html
内容(“Hello, 这是用 nginx 部署的网页!”)。
5.3 局域网访问(同一网络的其他设备)
在同一局域网的手机或电脑上,打开浏览器输入http://服务器IP
(如http://192.168.1.100
),即可访问网页。
5.4 常见访问失败原因及解决
-
问题 1:浏览器显示 “无法访问此网站”
可能原因:- 服务器 IP 输入错误:重新确认
ip addr show
的输出。 - nginx 未启动:用
sudo systemctl status nginx
检查,若未启动,执行sudo systemctl start nginx
。 - 防火墙拦截 80 端口:Linux 防火墙(如 ufw、firewalld)可能默认阻止 80 端口,需要开放:
- Ubuntu(ufw 防火墙):
bash
sudo ufw allow 80/tcp # 允许 80 端口的 TCP 流量 sudo ufw reload # 重新加载防火墙规则
- CentOS(firewalld 防火墙):
bash
sudo firewall-cmd --add-port=80/tcp --permanent # 永久开放 80 端口 sudo firewall-cmd --reload # 重新加载
- Ubuntu(ufw 防火墙):
- 服务器 IP 输入错误:重新确认
-
问题 2:显示 “403 Forbidden”
原因:nginx 没有网页文件的读取权限。解决:执行sudo chmod -R 755 /var/www/html
,并确保文件所有者不是root
(或通过sudo chown -R www-data:www-data /var/www/html
修改所有者为 nginx 运行用户)。 -
问题 3:显示 “404 Not Found”
原因:请求的文件不存在。比如访问http://服务器IP/abc.html
,但/var/www/html
下没有abc.html
,会显示 404。解决:确认文件名和路径是否正确。
6. 管理 nginx:“调整超市运营”
后续需要修改配置或重启服务时,可使用以下命令:
操作 | 命令 |
---|---|
停止 nginx 服务 | sudo systemctl stop nginx |
重启 nginx 服务 | sudo systemctl restart nginx |
重新加载配置(推荐) | sudo systemctl reload nginx (修改配置后无需停止服务,直接生效) |
检查配置是否有误 | sudo nginx -t (修改配置后必做,避免启动失败) |
示例:修改了/etc/nginx/sites-available/default
后,先检查配置:
bash
sudo nginx -t
若输出nginx: configuration file /etc/nginx/nginx.conf test is successful
,再重新加载:
bash
sudo systemctl reload nginx
7. 进阶:部署多网页与自定义端口
除了默认的 80 端口和index.html
,我们还可以扩展更多功能。
7.1 部署多个网页文件
在/var/www/html
下创建更多文件,比如about.html
:
bash
sudo nano /var/www/html/about.html
输入内容:
html
预览
<h1>关于我们</h1>
<p>这是第二个网页</p>
保存后,访问http://服务器IP/about.html
即可看到该内容。
7.2 用非 80 端口部署(避免端口冲突)
如果 80 端口被其他程序占用(比如 Apache),可以修改 nginx 监听的端口。例如改为 8080 端口:
- 编辑站点配置:
sudo nano /etc/nginx/sites-available/default
; - 把
listen 80
改为listen 8080
; - 检查配置:
sudo nginx -t
; - 重新加载:
sudo systemctl reload nginx
; - 开放 8080 端口(防火墙操作同 80 端口,只需替换为 8080);
- 访问时需加端口:
http://服务器IP:8080
。
8. 总结
用 nginx 搭建 HTTP 服务的核心流程可归纳为:
- 安装 nginx(
sudo apt install nginx
); - 配置站点(指定端口、网页目录,默认
/etc/nginx/sites-available/default
); - 放置网页文件到指定目录(如
/var/www/html/index.html
); - 启动 / 重载 nginx(
sudo systemctl start nginx
); - 通过服务器 IP 访问(
http://IP
)。
形象解释:用 “超市” 理解 nginx 部署网页
想象你开了一家小超市,想让顾客能轻松买到你货架上的商品(比如零食、饮料)。这里的 “顾客” 就是用浏览器访问网页的人,“商品” 就是你想展示的网页文件(HTML、图片等),而 nginx 就像超市里的 “智能导购员”—— 它的工作是:当顾客来问 “有没有可乐?”(对应浏览器输入网址),它能立刻找到可乐放在哪个货架(对应网页文件存在哪个文件夹),然后把可乐递给顾客(把网页内容返回给浏览器)。
搭建 “能访问的网页” 的过程,就像开超市的三步:
- 请导购员上班(安装 nginx);
- 告诉导购员商品放哪(配置 nginx 指向网页文件的存放目录);
- 把商品摆上货架(准备好 HTML 等网页文件);
- 打开超市门(启动 nginx 服务)。
这样,顾客(浏览器)就能 “走进超市”(输入网址),拿到你准备的 “商品”(看到网页)了。