Ubuntu 24.04 安装 Nginx:部署第一个独立网站

部署第一个网站,可以先从静态页面开始:它让你分别确认服务器、Nginx、域名和端口是否正常,之后再接入 PHP 或其他应用。本文以 Ubuntu 24.04 软件源中的 Nginx 为例,创建独立站点,不覆盖默认页面,也不替换已有主配置。

以下使用 example.com 作为域名,203.0.113.10 作为示例地址。正式操作时替换为你控制的域名和服务器公网地址。准备一个有 sudo 权限的账号,并先完成 SSH 与防火墙的基础配置。

第一步:确认端口由谁占用

在服务器执行:

sudo ss -lntp
command -v nginx
ls -l /etc/nginx/sites-enabled

未安装时,后两项可能没有结果或提示目录不存在。若端口 80、443 已由 Apache、面板或容器占用,先确认现有架构,不能直接停止它们。已经安装 Nginx 的服务器,应跳过重复安装,先备份配置并检查站点命名是否冲突。

确认适合安装后,从 Ubuntu 软件源执行:

# Ubuntu 服务器
sudo apt update
sudo apt install nginx
sudo systemctl status nginx --no-pager

软件源版本与官网安装包的目录、模块和维护方式可能不同。本教程采用 Ubuntu 的目录约定;不要把不同来源的安装步骤混在一起。Ubuntu Nginx 安装文档提供了软件源安装方式。

第二步:为新站点创建单独目录

先检查以下路径是否已经存在;若已有业务文件,改用新的目录与配置名称,而不是继续覆盖。确认是未使用的新路径后:

# Ubuntu 服务器
sudo install -d -m 0755 /var/www/example.com/public
sudo nano /var/www/example.com/public/index.html

写入一个能明确识别站点的页面:

<!doctype html>
<html lang="zh-CN">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>我的第一个网站</title>
</head>
<body>
  <h1>网站已部署</h1>
  <p>这是 example.com 的独立静态站点。</p>
</body>
</html>

保存后设置该新文件的读取权限:

sudo chmod 0644 /var/www/example.com/public/index.html

网页文件需要让 Nginx 工作进程读取,上层目录需要允许穿越。不要用 chmod -R 777 解决权限问题,也不必把整个网站目录交给 Web 进程写入。后续上传文件时,只向确实需要写入的目录授予相应权限。

第三步:添加独立 server 配置

确认 /etc/nginx/sites-available/example.com.conf 尚不存在后,使用 sudo nano 新建该文件:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/public;
    index index.html;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location / {
        try_files $uri $uri/ =404;
    }
}

这里通过 server_name 区分站点。保留默认站点不会妨碍按域名匹配的新站点;直接访问 IP 时看到默认页,也不代表新站点失效。先搜索已有配置,确保没有其他已启用的站点声明相同域名。

如果计划提供 IPv6,并已完成系统地址和网络配置,可在同一块中增加 listen [::]:80;。没有验证 IPv6 前,不要先发布 AAAA 记录。

启用新配置时,不使用强制覆盖链接选项:

# Ubuntu 服务器
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
sudo nginx -t

如果软链接已存在,停下来核对其目标。配置检测成功后,再执行 sudo systemctl reload nginx。检测失败时应先修正,不能跳过校验重启。Nginx 的重新加载机制及静态站点结构可参考官方入门文档

第四步:先验证站点匹配,再验证公网

在服务器执行带域名请求头的本地测试:

curl -I -H 'Host: example.com' http://127.0.0.1/
curl -H 'Host: example.com' http://127.0.0.1/

检查返回状态和页面内容确实属于新站点。随后在个人电脑上测试;macOS/Linux 可用 curl,Windows PowerShell 使用 curl.exe

# 个人电脑:替换公网地址
curl --resolve example.com:80:203.0.113.10 http://example.com/

--resolve 只改变这次请求使用的地址,适合正式切换 DNS 前验收。还需要在主机防火墙和云安全组放行 TCP 80。确认通过后再配置域名解析,并申请 HTTPS 证书;包含密码和个人信息的业务应在 HTTPS 完成后开放。

常见问题与撤回方法

看到默认欢迎页时,先核对访问域名、Host、DNS 和 server_name,不要急着删除默认配置。出现 403,检查文件读取权限、目录穿越权限和首页名称;出现 404,检查 root 路径与上传位置。

如新增配置影响验收,可将本次新增的启用软链接移出 sites-enabled,保留站点文件,再执行配置检测和重新加载。不要移动不属于本次操作的其他链接。完成后再次访问已有站点和新站点,确认访问日志落入各自文件,这样后续排错才有清晰的范围。

交付前再做一次内容检查

静态页面上线后,把页面标题改成清楚描述业务的文字,正文使用可读的标题层级,为有信息意义的图片补充替代文字。后续增加第二个页面时,使用正常链接连接它们,并检查不存在的地址确实返回 404,而不是所有路径都返回相同欢迎页。

在同一服务器上添加多个站点时,应继续为各站点保留独立目录、配置与日志。上传新文件前核对目标路径,内容更新和配置更新分别验收。前者重点检查页面是否正确,后者必须经过配置检测与重新加载。需要动态应用时,再建立明确的应用进程或 PHP 处理方式,不要把服务器端源代码直接放入静态下载目录。

最后保存本次使用的域名、目录、日志位置和端口要求,并记录如何撤销这次新增站点。以后遇到访问异常,接手的人就能先找到对应配置,而不用猜测哪个文件曾被修改。

参考资料

继续阅读

返回天理云文章中心

分享到:
上一篇
Ubuntu UFW 防火墙配置:先保住 SSH,再开放网站端口
下一篇
域名怎么解析到服务器?A、AAAA、CNAME 与 TTL 配置指南
服务中心
企微客服
企微客服
给您高效服务
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意