项目

一般

简介

行为

memo #4

打开

如何给ubuntu安装一个nginx

heliang大约 2 个月 之前添加.

状态:
New
优先级:
Normal
指派给:
开始日期:
2026-01-01
计划完成日期:
% 完成:

0%

预期时间:

描述

好,这个事儿很基础,但里面有不少坑,我顺便把“为什么这么做”也讲清楚点,免得你以后被端口、防火墙、云厂商安全组折腾 😄

下面默认你是 Ubuntu 20.04 / 22.04 / 24.04,基本都一样。


一、安装 Nginx(最稳妥方式)

Ubuntu 官方源里的 nginx 够用、稳定、维护省心,我个人非常不建议一上来就源码编译。

sudo apt update
sudo apt install -y nginx

装完以后,系统已经帮你:

  • 创建了 nginx 用户
  • 配好了 systemd 服务
  • 默认监听 80 端口

二、确认 nginx 是否启动成功

systemctl status nginx

你应该能看到:

  • active (running)
  • 没有红色报错

如果没启动:

sudo systemctl start nginx
sudo systemctl enable nginx

enable 很重要,不然你重启服务器它就没了。


三、本机验证(一定要先做)

在服务器上直接 curl 一下:

curl http://127.0.0.1

如果看到一大段 HTML,里面有 “Welcome to nginx!”,说明:

✅ nginx 正常
✅ 端口监听没问题
❌ 还不能说明外网能访问


四、外网访问不了?99%不是 nginx 的锅

这一步你之前已经踩过坑了,我直接把关键点说透。

1️⃣ 云厂商安全组(最容易忘)

如果你是:

  • Oracle Cloud
  • AWS EC2
  • 阿里云 / 腾讯云

你必须在 控制台 放行:

协议 端口 来源
TCP 80 0.0.0.0/0

👉 iptables / ufw 放行了也没用,云安全组是“外层防火墙”。


2️⃣ Ubuntu 防火墙(ufw)

先看看有没有 ufw:

sudo ufw status

如果显示 inactive,可以先不用管。

如果是 active:

sudo ufw allow 80
sudo ufw reload

五、nginx 的目录结构(这个一定要懂)

Ubuntu 的 nginx 和网上很多教程不一样,重点在这里:

/etc/nginx/
├── nginx.conf          # 总配置
├── sites-available/    # 所有站点配置
├── sites-enabled/      # 实际生效的站点(软链接)
└── conf.d/

默认站点配置在:

/etc/nginx/sites-available/default

你可以看一眼:

sudo nano /etc/nginx/sites-available/default

重点关注这几行:

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

    root /var/www/html;
    index index.html index.htm;

    server_name _;
}

六、放一个你自己的页面(验证是否真的生效)

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

写点明显的:

<h1>Hello Nginx</h1>
<p>It works.</p>

保存后刷新浏览器。

如果你能看到这个页面,说明:

✅ nginx
✅ 配置
✅ 权限
✅ 端口

全部 OK。


七、常用命令(以后会高频用)

sudo nginx -t          # 检查配置(改配置后必跑)
sudo systemctl reload nginx   # 热加载(不断连接)
sudo systemctl restart nginx  # 重启(会断)

强烈建议习惯 nginx -t,能救你很多次。


八、我的个人建议(经验之谈)

  1. 先别急着 HTTPS

    • 没 80 通就别碰 443
  2. nginx 只干反向代理

    • 后端 Spring / Ruby / Node 跑自己的端口
  3. 别直接改 nginx.conf

    • 只动 sites-available
  4. 1G 内存机器

    • nginx 非常省资源,放心用

九、下一步你可以做什么(你这个情况很合适)

如果你愿意,下一步我可以直接帮你做其中一个:

  • 🔁 nginx 反向代理到 8080 / 3000
  • 🔒 用 Let’s Encrypt 配 HTTPS
  • 🚀 nginx + WebFlux / Redmine / Spring Boot
  • 🧠 教你看 access.log / error.log 定位问题

你直接说你 打算拿 nginx 干嘛,我按真实生产环境给你配。

没有任何数据可供显示

行为

导出 Atom PDF