Nginx 安装与起步:Ubuntu 上的 Web 服务器第一课

Nginx 安装与起步:Ubuntu 上的 Web 服务器第一课

NginxUbuntu
📶 入门 🧩 Nginx

很多人的第一台服务器,都是从装上 Nginx 开始的。作为全球最主流的 Web 服务器与反向代理工具,它的轻量与高性能毋庸置疑。但第一次在 Ubuntu 部署时,怎么装才不留隐患?目录结构该怎么理?server block 怎么写才规范?本篇教程将带你跑通全程。

部署前须知:2核2G 足以支撑入门流量

Nginx 对资源消耗极小。官方文档给出的基础运行条件仅需几兆内存。在当前公有云上,最基础的 2核2G 实例(例如阿里云 2核2G,参考价 ¥38/年,价格查询于 2026-10-02)撑起早期的 Web 服务绰绰有余。瓶颈通常卡在你的业务代码,而不在 Nginx 本身。

避开隐患:用 apt 源跑通 Nginx 安装

Ubuntu 24.04 LTS 的官方仓库已经包含了稳定版本的 Nginx。直接使用 apt 安装,能确保系统级依赖不出错,这也是后续维护成本最低的选择。

sudo apt update
sudo apt install nginx

安装完成后,系统会自动拉起 Nginx 进程。

放行 80 端口:用 UFW 最小化暴露服务

Nginx 安装后会自动向 ufw 注册服务配置。只需放行 HTTP 流量,直接开启针对性的策略,坚决避免盲目关闭整机防火墙。

sudo ufw allow 'Nginx HTTP'
sudo ufw status

终端会输出状态,确认 Nginx HTTP 为 ALLOW。80 端口至此已成功对外暴露。

验证服务:认准 Nginx 默认欢迎页

拿到服务器公网 IP(假设为 server_ip),直接在浏览器中访问 http://server_ip。只要出现 “Welcome to nginx!” 的页面,代表 Nginx 已经成功接管了这台机器的 Web 流量。

如果页面处于加载状态,可以通过 curl 在本地验证 80 端口是否被监听:

curl -I http://localhost

终端返回 HTTP/1.1 200 OK,代表 Nginx 运行正常,阻断发生在外部网络层面。

管理 Nginx 进程:重载比重启更好用

维护 Nginx 服务时,直接重启(restart)会切断正在处理的活跃连接。更好的习惯是用重载(reload)。它能在不掉线的情况下平滑应用新配置,是更安全的工程实践。

sudo systemctl reload nginx

其他需要掌握的常用管理动作:

sudo systemctl stop nginx
sudo systemctl start nginx
sudo systemctl restart nginx
sudo systemctl enable nginx

配置 server block:一台机器托管多个域名

反向代理入门的核心,就是理解 server block。不要把所有配置都堆在默认文件里,为每个站点建立独立的目录和配置,是防止后期维护混乱的底线。

假设你要托管 example.com,先建立独立的资源目录:

sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com/html
sudo chmod -R 755 /var/www/example.com

接着,写入测试用的首页:

sudo nano /var/www/example.com/html/index.html

在文件中填入:

<html>
    <head>
        <title>Welcome to example.com!</title>
    </head>
    <body>
        <h1>Success! The example.com server block is working!</h1>
    </body>
</html>

随后,在 /etc/nginx/sites-available/ 路径下创建该站点的专属配置:

sudo nano /etc/nginx/sites-available/example.com

写入基础的静态托管配置:

server {
        listen 80;
        listen [::]:80;

        root /var/www/example.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name example.com www.example.com;

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

最后,通过软链接激活配置,验证语法无误后重载服务:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

摸清 Nginx 的 4 个核心目录

  • /var/www/html:默认的静态资源存放地。
  • /etc/nginx/nginx.conf:全局配置文件,控制工作进程数等核心底层参数。
  • /etc/nginx/sites-available/ 与 /etc/nginx/sites-enabled/:前者集中存放站点的配置文件,后者存放实际激活的软链接。
  • /var/log/nginx/:存放 access.log 和 error.log。排查 502 等错误时,永远先查这里的报错。

常见问题(FAQ)

  • 为什么改了配置没生效? 大概率是改完没有执行 sudo systemctl reload nginx,或者修改的文件在 sites-available 但没有软链接到 sites-enabled 目录。
  • 遇到 403 Forbidden 怎么排查? Nginx 进程没有权限读取网站目录。检查 /var/www/example.com 的目录权限是否正确(通常为 755),并确认配置文件中的 root 路径拼写无误。
  • 80 端口被占用怎么办? 执行 sudo ss -lntp | grep :80 找出占用端口的具体进程。通常是另一个 Web 服务器(如 Apache)还在后台运行,将其停止并禁用自启即可。

用官方源安装、分离独立站点的 server block、只放行必要的防火墙端口,是部署 Nginx 的标准动作。建立起清晰的目录规矩,后续为站点签发证书并平滑过渡到 HTTPS 阶段,才能保证结构不乱。

参考链接:

  • How to Install and Configure Nginx on Ubuntu