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?
当然可以,但有几个现实问题:
-
性能与稳定性:开发用的服务器通常不适合生产环境,并发一高就容易崩。Nginx 专门为高并发优化,能扛住大量访问。
-
端口问题:浏览器默认访问 80 端口(http)或 443 端口(https),但你的应用可能跑在 3000、8000 等端口上。你总不能让别人输入
http://你的IP:3000吧?Nginx 可以监听 80 端口,然后把请求转发到你的应用端口。 -
一个服务器跑多个网站:你想在同一台服务器上放两个网站,一个用
a.com,一个用b.com。Nginx 可以根据域名把请求分发到不同的目录或应用。 -
HTTPS 支持:现在网站几乎都要上 HTTPS(小锁头)。Nginx 配置 SSL 证书非常方便,让你的网站更安全。
-
静态文件加速:如果你的网站有很多图片、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,但命令类似)。
# 更新软件源 sudo apt update # 安装 nginx sudo apt install nginx
安装完成后,Nginx 会自动启动。你可以用浏览器访问你的服务器 IP,应该能看到 Nginx 的默认欢迎页面(如果服务器有防火墙,记得开放 80 端口)。
常用命令:
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 访问它。
-
创建目录并放入你的文件:
sudo mkdir -p /var/www/mywebsite # 把你的文件复制进去,例如: sudo cp ~/mywebsite/* /var/www/mywebsite/
-
创建 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/mywebsite
写入以下内容:
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。
-
启用配置(创建软链接):
sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/
-
测试配置并重新加载:
sudo nginx -t sudo systemctl reload nginx
现在,只要你把域名解析到服务器 IP,访问 http://example.com 就能看到你的网站了。
六、实战:反向代理到 Node.js 应用
假设你有一个 Node.js 应用跑在本机 3000 端口,你想让用户通过 example.com 访问它,并且把 /api 开头的请求转发给应用。
配置如下:
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。
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 跑起来吧!遇到问题不要慌,搜索错误信息往往就能找到答案。祝你部署顺利!
- 点赞
- 收藏
- 关注作者
评论(0)