【Lniux入门】用 nginx 搭建简单 HTTP 服务

1. 核心概念:HTTP 服务与 nginx

  • HTTP 服务:是一种让计算机(服务器)通过网络向其他设备(客户端,如手机、电脑)传输网页内容的 “规则”。比如你在浏览器输入http://xxx,本质是向服务器发送 “请给我这个网页” 的请求,服务器按 HTTP 规则返回内容。
  • nginx:是一款轻量、高效的 “HTTP 服务器软件”,它的核心功能就是按配置接收客户端请求,找到对应的网页文件并返回。除了做 HTTP 服务器,它还能做反向代理、负载均衡等,但入门阶段我们先聚焦 “静态网页部署”。
2. 准备工作:环境与工具
  • 操作系统:推荐 Linux 发行版(如 Ubuntu 20.04、CentOS 7/8),以下操作以 Ubuntu 20.04 和 CentOS 7 为例(小白建议先用 Ubuntu,命令更统一)。
  • 工具:需要终端(命令行界面),以及文本编辑器(如nanovim,小白推荐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.confnginx 主配置文件(核心配置入口)
/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://localhosthttp://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  # 重新加载
        
  • 问题 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 端口:

  1. 编辑站点配置:sudo nano /etc/nginx/sites-available/default
  2. listen 80改为listen 8080
  3. 检查配置:sudo nginx -t
  4. 重新加载:sudo systemctl reload nginx
  5. 开放 8080 端口(防火墙操作同 80 端口,只需替换为 8080);
  6. 访问时需加端口:http://服务器IP:8080
8. 总结

用 nginx 搭建 HTTP 服务的核心流程可归纳为:

  1. 安装 nginx(sudo apt install nginx);
  2. 配置站点(指定端口、网页目录,默认/etc/nginx/sites-available/default);
  3. 放置网页文件到指定目录(如/var/www/html/index.html);
  4. 启动 / 重载 nginx(sudo systemctl start nginx);
  5. 通过服务器 IP 访问(http://IP)。

形象解释:用 “超市” 理解 nginx 部署网页

想象你开了一家小超市,想让顾客能轻松买到你货架上的商品(比如零食、饮料)。这里的 “顾客” 就是用浏览器访问网页的人,“商品” 就是你想展示的网页文件(HTML、图片等),而 nginx 就像超市里的 “智能导购员”—— 它的工作是:当顾客来问 “有没有可乐?”(对应浏览器输入网址),它能立刻找到可乐放在哪个货架(对应网页文件存在哪个文件夹),然后把可乐递给顾客(把网页内容返回给浏览器)。

搭建 “能访问的网页” 的过程,就像开超市的三步:

  1. 请导购员上班(安装 nginx);
  2. 告诉导购员商品放哪(配置 nginx 指向网页文件的存放目录);
  3. 把商品摆上货架(准备好 HTML 等网页文件);
  4. 打开超市门(启动 nginx 服务)。

这样,顾客(浏览器)就能 “走进超市”(输入网址),拿到你准备的 “商品”(看到网页)了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值