Ubuntu安装Nginx并发布静态网站

本文以Ubuntu 24.04 LTS、官方软件仓库安装的Nginx和拥有sudo权限的账户为例,完成一个独立静态站点。服务器必须允许建站;住宅云禁止建站、80端口关闭,不适用本教程。已由宝塔等面板管理的服务器,应在面板创建站点,不再混装第二套Web服务。

准备域名、目录和端口

下文example.com、www.example.com均为占位域名,必须替换成自己管理的实际名称。先查看服务器当前公网IP;域名A记录指向该地址。仅在IPv6及网站监听都可用时配置AAAA。如所购产品要求域名过白,先按该产品购买须知完成域名提交并核对结果;流程有疑问或提交后出现异常,再通过工单说明情况。

sudo ss -lntp
ls -ld /var/www/baole-demo

新目录尚未创建时,ls提示No such file or directory是正常的前提检查结果。确认80端口没有被其他Web服务占用。示例目录应是新目录;若已存在业务文件,换一个独立路径,不能覆盖原网站。保存当前访问规则,仅为网站开放必要的TCP 80;后续配置HTTPS时再开放443,不需要开放数据库端口。

安装并检查服务

sudo apt update
sudo apt install nginx curl
systemctl is-active nginx
sudo nginx -t

is-active应显示active;nginx -t应同时显示syntax is ok和test is successful,并以退出码0结束;只看到前半句成功而随后报错,不算检测通过。若安装失败、服务不是active或检测失败,先查看明确报错,不能继续加载配置。软件安装完成只代表服务可用,尚不代表你的域名命中了正确网站。

创建测试页面和站点配置

sudo install -d -m 0755 /var/www/baole-demo
printf '%s\n' '<h1>Baoleyun static test</h1>' | sudo tee /var/www/baole-demo/index.html
sudo chmod 0644 /var/www/baole-demo/index.html
sudo nano /etc/nginx/sites-available/baole-demo.conf

在新配置文件中填写以下内容;域名和目录必须与前面一致。已有同名配置时先检查用途,不直接覆写。

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/baole-demo;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
sudo ln -s /etc/nginx/sites-available/baole-demo.conf /etc/nginx/sites-enabled/baole-demo.conf
sudo nginx -t

软链接已存在时不要反复创建,先确认它是否指向当前配置。只有检测成功,再运行sudo systemctl reload nginx。使用reload加载新配置,避免无必要地中断服务。

先验证站点匹配,再验证公网

curl -i --resolve example.com:80:127.0.0.1 http://example.com/
curl -i --resolve example.com:80:127.0.0.1 http://example.com/not-exist

第一条应返回HTTP 200并包含前文创建的Baoleyun static test,而不是默认欢迎页;第二条应返回HTTP 404。随后从服务器以外的网络打开实际域名,确认返回同样的自定义测试文字。只在服务器上测试成功,不能证明公网规则和DNS已经正确。公网仍显示默认页时,检查请求域名与server_name;出现403时查看目录读取及父目录通行权限,不使用chmod 777处理。

失败时如何恢复

新站点导致检测失败时,不执行reload;修改错误后重测。已加载但结果不符合预期时,可移除本次创建的sites-enabled软链接后重新检测并加载,保留sites-available文件和站点数据供排查。不要删除其他站点配置。静态页通过后再部署程序,勿把本测试页面当成完整应用上线。