Nginx 入门指南

举报
暮山紫 发表于 2026/09/04 09:15:22 2026/09/04
【摘要】 Nginx 入门指南:从零开始部署你的网站你刚刚写好了一个网站,可能是用 HTML/CSS 做的静态页面,也可能是用 Node.js、Python 或 PHP 写的动态应用。现在你想把它放到互联网上,让别人能通过一个网址访问到。这时候你就会遇到一个绕不开的工具——Nginx(发音 “engine-x”)。这篇文章就是为你准备的:不需要你懂太多服务器知识,我会用大白话告诉你 Nginx 是什么...

Nginx 入门指南:从零开始部署你的网站

你刚刚写好了一个网站,可能是用 HTML/CSS 做的静态页面,也可能是用 Node.js、Python 或 PHP 写的动态应用。现在你想把它放到互联网上,让别人能通过一个网址访问到。这时候你就会遇到一个绕不开的工具——Nginx(发音 “engine-x”)。

这篇文章就是为你准备的:不需要你懂太多服务器知识,我会用大白话告诉你 Nginx 是什么、为什么需要它,以及怎么用它快速把你的网站跑起来。

一、Nginx 到底是什么?

简单说,Nginx 是一个高性能的 Web 服务器反向代理服务器

  • Web 服务器:它的本职工作就是把你的网站文件(比如 HTML、图片、CSS、JS)发送给访问者的浏览器。就像餐厅的服务员,客人点菜(输入网址),服务员从厨房(你的服务器文件目录)把菜(网页内容)端到客人桌上(浏览器显示)。

  • 反向代理服务器:它还可以站在你的应用前面,帮你把请求转发给后面的程序(比如 Node.js 应用、Python 应用),再把结果返回给用户。相当于一个前台接待,客人来了先找前台,前台再转给具体负责人。

Nginx 是俄罗斯人 Igor Sysoev 写的,2004 年发布。因为它特别轻量、能同时处理成千上万个连接而不卡顿,现在全球超过 30% 的网站都在用它,包括很多大厂。

二、为什么小白也要用 Nginx?

你可能会问:我直接用 Node.js 或 Python 自带的服务器不行吗?比如 python -m http.server 或者 node server.js

当然可以,但有几个现实问题:

  1. 性能与稳定性:开发用的服务器通常不适合生产环境,并发一高就容易崩。Nginx 专门为高并发优化,能扛住大量访问。

  2. 端口问题:浏览器默认访问 80 端口(http)或 443 端口(https),但你的应用可能跑在 3000、8000 等端口上。你总不能让别人输入 http://你的IP:3000 吧?Nginx 可以监听 80 端口,然后把请求转发到你的应用端口。

  3. 一个服务器跑多个网站:你想在同一台服务器上放两个网站,一个用 a.com,一个用 b.com。Nginx 可以根据域名把请求分发到不同的目录或应用。

  4. HTTPS 支持:现在网站几乎都要上 HTTPS(小锁头)。Nginx 配置 SSL 证书非常方便,让你的网站更安全。

  5. 静态文件加速:如果你的网站有很多图片、CSS、JS,Nginx 可以直接高效地返回这些文件,不用经过你的应用代码,大大减轻后端压力。

所以,即使你是个小白,想认真部署一个网站,学会用 Nginx 是性价比极高的一步。

三、Nginx 的核心概念(用大白话解释)

在动手配置之前,你需要了解几个基本名词,别怕,都很直观。

1. 虚拟主机(Server Block)

一台物理服务器上可以跑很多个网站,Nginx 通过“虚拟主机”来区分它们。每个虚拟主机对应一个域名(比如 www.example.com)或者一个 IP+端口。当请求进来时,Nginx 根据请求的域名找到对应的虚拟主机配置,然后处理。

你可以把它理解成一栋大楼里的不同房间,每个房间住着不同的网站。

2. 监听端口(Listen)

每个虚拟主机要指定监听哪个端口。默认网站是 80 端口(HTTP),HTTPS 是 443 端口。你可以让 Nginx 同时监听 80 和 443。

3. 服务器名(Server Name)

就是你的域名,比如 example.com 或 www.example.com。Nginx 根据请求头里的 Host 字段来匹配 server_name。

4. 位置匹配(Location)

这是 Nginx 配置里最常用的部分。它定义了对于不同的 URL 路径,应该怎么处理。

例如:

  • location / 匹配所有路径。

  • location /images/ 匹配以 /images/ 开头的路径,适合用来处理图片等静态文件。

  • location /api/ 匹配以 /api/ 开头的路径,通常转发给后端应用。

你可以把 location 想象成大楼里每个房间内部的指示牌:走到 /images/ 这个区域,就去取静态文件;走到 /api/ 这个区域,就去找后端程序。

5. 反向代理(Proxy Pass)

当请求匹配到某个 location 时,你可以让 Nginx 把这个请求“转发”给另一个服务器(比如本机的 3000 端口),然后把响应返回给用户。这就是反向代理。配置里用 proxy_pass 指令。

6. 根目录(Root)

指定网站文件的存放目录。比如你的 HTML 文件放在 /var/www/mywebsite,那么 root /var/www/mywebsite; 就是告诉 Nginx 去这个目录找文件。

四、Nginx 的安装与基本操作

这里以最常见的 Ubuntu/Debian 系统为例(如果你用 CentOS 可以用 yum,但命令类似)。

bash
# 更新软件源
sudo apt update
# 安装 nginx
sudo apt install nginx

安装完成后,Nginx 会自动启动。你可以用浏览器访问你的服务器 IP,应该能看到 Nginx 的默认欢迎页面(如果服务器有防火墙,记得开放 80 端口)。

常用命令:

bash
sudo systemctl start nginx   # 启动
sudo systemctl stop nginx    # 停止
sudo systemctl restart nginx # 重启
sudo systemctl reload nginx  # 重新加载配置(不中断服务)
sudo nginx -t                # 测试配置文件语法是否正确

配置文件通常在 /etc/nginx/nginx.conf,但一般我们不在主配置文件里写网站配置,而是在 /etc/nginx/sites-available/ 目录下创建配置文件,然后软链接到 /etc/nginx/sites-enabled/ 目录。Ubuntu 默认有一个 default 文件可以参考。

五、实战:配置一个静态网站

假设你已经有了一个静态网站,文件放在 /var/www/mywebsite 目录下,里面有一个 index.html。你想通过域名 example.com 访问它。

  1. 创建目录并放入你的文件:

bash
sudo mkdir -p /var/www/mywebsite
# 把你的文件复制进去,例如:
sudo cp ~/mywebsite/* /var/www/mywebsite/
  1. 创建 Nginx 配置文件:

bash
sudo nano /etc/nginx/sites-available/mywebsite

写入以下内容:

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

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

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

解释:

  • listen 80; 监听 80 端口。

  • server_name 你的域名。

  • root 网站根目录。

  • index 默认首页文件。

  • location / 对所有请求,try_files 尝试找到对应的文件,找不到就返回 404。

  1. 启用配置(创建软链接):

bash
sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/
  1. 测试配置并重新加载:

bash
sudo nginx -t
sudo systemctl reload nginx

现在,只要你把域名解析到服务器 IP,访问 http://example.com 就能看到你的网站了。

六、实战:反向代理到 Node.js 应用

假设你有一个 Node.js 应用跑在本机 3000 端口,你想让用户通过 example.com 访问它,并且把 /api 开头的请求转发给应用。

配置如下:

nginx
server {
    listen 80;
    server_name example.com;

    # 静态文件直接由 Nginx 处理(如果有)
    location /static/ {
        root /var/www/myapp;
    }

    # 其他请求转发给 Node.js 应用
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

解释:

  • proxy_pass http://localhost:3000; 把请求转发到本机 3000 端口。

  • 后面的几行是为了支持 WebSocket 和传递正确的 Host 头,一般复制过去就行。

这样,用户访问 example.com 时,Nginx 会把请求交给 Node.js 应用处理,然后把结果返回。

七、配置 HTTPS(免费 SSL 证书)

现在几乎所有网站都应该用 HTTPS。你可以使用 Let's Encrypt 免费证书,配合 Certbot 工具自动配置 Nginx。

bash
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

Certbot 会自动修改你的 Nginx 配置,加上 SSL 证书并设置自动跳转 HTTPS。完成后,你的网站就有小锁头了。

八、常见问题与排查

  • 配置报错:修改配置后先运行 sudo nginx -t 检查语法。

  • 403 Forbidden:通常是权限问题,确保 Nginx 用户(通常是 www-data)能读取你的网站文件。可以执行 sudo chown -R www-data:www-data /var/www/mywebsite

  • 域名解析不生效:检查 DNS 设置,确保 A 记录指向你的服务器 IP。

  • 端口被占用:如果 80 端口被其他程序占用,先停掉它或者改 Nginx 监听其他端口(但不推荐,用户访问还得加端口)。

九、总结

Nginx 是你部署网站路上的一位得力助手。它不难,常用的配置就那么几行。掌握了虚拟主机、location、反向代理这几个概念,你就能应对绝大多数场景。

  • 静态网站:直接 root + index。

  • 动态应用:反向代理到应用端口。

  • 多个网站:写多个 server 块。

  • HTTPS:用 Certbot 一键搞定。

现在,打开你的终端,试着把你的网站用 Nginx 跑起来吧!遇到问题不要慌,搜索错误信息往往就能找到答案。祝你部署顺利!

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。