很多人的第一台服务器,都是从装上 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