告别 Nginx 配置难题!10 分钟掌握关键技能,新手也能高效搞定配置

作为开发者或运维人员,你一定听说过 Nginx。它是 Web 服务器领域里一个非常强大的工具,在全球范围的高流量网站(比如淘宝、京东、网易)几乎都在使用它。
但是,很多初学者对 Nginx 的印象只停留在听过或者配过。没有真的了解它全部的能力。
接下来我们就来了解下,Nginx 有什么用?怎么用?使用场景有哪些等等。
一、Nginx 是什么?
Nginx 是一款轻量级、高性能的 HTTP 和反向代理 Web 服务器。
它是由俄罗斯人 Igor Sysoev 开发,因为处理高并发能力很强、系统资源消耗低而出名。如果把我们的后端服务比作一家饭馆,那么 Nginx 就是门口那个超级迎宾员。
- 它能快速把客人(请求)领到位;
- 它能挡住那些捣乱的人(安全防护);
- 它还能把客人分流到不同的窗口(负载均衡)。
二、Nginx 有什么用?
很多人以为 Nginx 只能用来放 HTML 的网页,其实它的功能远不止于此:
2.1 静态资源服务
这是最基础的功能。相比于后端语言处理图片、CSS、JS 文件,Nginx 处理这些静态文件的速度要快得多,效率极高。
2.2 反向代理
这是 Nginx 最常用的场景。客户端(浏览器)并不直接访问后端服务(如 Node.js、Python、Java),而是访问 Nginx,Nginx 再转发给后端。
好处: 隐藏真实服务器 IP,提高安全性;统一入口,便于管理。
2.3 负载均衡
当你的网站访问量变大,一台服务器扛不住了,你可以部署 10 台服务器。Nginx 可以按照规则(比如轮询、最少连接)把流量平均分给这 10 台服务器,保证系统不崩。
2.4 HTTPS 配置
配置 SSL 证书,让网站从 HTTP 升级为 HTTPS。
三、Nginx 的基础命令与配置
在开始部署前,你需要先有一台安装了 Nginx 的服务器(Linux 环境)。
安装(以 CentOS 为例):
yum install nginx -y
常用操作命令:
# 启动 nginx # 停止 nginx -s stop # 重启(推荐:修改配置后平滑重载,不中断服务) nginx -s reload # 检查配置文件是否正确 nginx -t
配置文件位置:
通常在/etc/nginx/nginx.conf,或者/etc/nginx/conf.d/目录下的.conf文件。
四、怎么部署一个网站?(静态部署)
假设你已经写好了一个前端项目,打包后生成了一个 dist 文件夹,里面有 index.html。我们要把它部署到服务器上。
4.1 上传文件
把 dist 文件夹上传到服务器的/var/www/my-site/目录下。
4.2 修改 Nginx 配置
创建或编辑一个配置文件
server {
# 监听 80 端口
listen 80;
# 你的域名,或者服务器 IP
server_name example.com;
# 字符集
charset utf-8;
# 重点:静态文件根目录
location / {
root /var/www/my-site/dist;
index index.html index.htm;
# 解决 Vue/React 路由刷新 404 的问题
try_files $uri $uri/ /index.html;
}
}
4.3 生效配置
运行一下,看看是否生效:
nginx -s reload
。
4.4 访问
打开浏览器输入域名或 IP,你的网站就上线了!
五、如何部署一个服务?(反向代理)
假设你写了一个 Java、Node.js 或 Python 的后端服务,它在服务器的 3000 端口运行。你不想让用户在地址栏输入 example.com:3000,而是想直接用 example.com/api 来访问。
5.1 确保后端服务已启动
比如用pm2 start app.js启动了 Node 服务,或者是用java -jar app.jar启动了一个 Java 的服务。
5.2 修改 Nginx 配置
server {
listen 80;
server_name example.com;
# 情况 A:处理前端静态页面(如果有的话)
location / {
root /var/www/my-site/dist;
index index.html;
}
# 情况 B:反向代理后端接口
location /api/ {
# 关键指令:把请求转发给本机的 3000 端口
proxy_pass http://127.0.0.1:3000/;
# 传递一些必要的头信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
5.3 逻辑解析
- 当用户访问 example.com/login.html 时,Nginx 找到 /var/www…/login.html 返回给用户。
- 当用户访问 example.com/api/users 时,Nginx 拦截请求,转发给内部的 http://127.0.0.1:3000/users。
5.4 生效
运行一下,看看是否生效:
nginx -s reload
六、部署 HTTPS(SSL 证书)
当双十一来了,一台服务器快崩了怎么办?这时候你需要负载均衡。
假设你有三台机器(或者同一台机器起三个服务),端口分别是 3001、3002、3003。
配置示例:
# 1. 定义一个上游服务器组(负载均衡组)
upstream my_server_cluster {
# 轮询策略:默认按顺序一个个来
server 127.0.0.1:3001;
server 127.0.0.1:3002;
server 127.0.0.1:3003;
# 还可以加权重:weight=2 表示这台机器性能好,多分点流量
# server 127.0.0.1:3001 weight=2;
}
server {
listen 80;
server_name www.example.com;
location / {
# 2. 代理转发给上面的集群
proxy_pass http://my_server_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
当用户访问 www.example.com,Nginx 会自动把第一个人分给 3001,第二个人分给 3002……,可以说是实现了雨露均沾,大大提高了系统的并发能力。
七、部署 HTTPS(SSL 证书)
现在的浏览器没个 HTTPS 都会标不安全,部署 HTTPS 是标配。
但首先,你需要去阿里云、腾讯云或者 Let’s Encrypt 申请 SSL 证书,下载下来通常有两个文件:
.crt或.pem(证书文件).key(私钥文件)
把这两个文件上传到服务器的/etc/nginx/ssl/目录下。
配置示例:
server {
# 1. 开启 HTTPS,监听 443 端口
listen 443 ssl;
server_name www.example.com;
# 2. 配置证书路径(改成你的实际路径)
ssl_certificate /etc/nginx/ssl/example.com.pem;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
# 3. 推荐的安全配置
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3; # 使用安全的加密协议
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 4. 你的业务逻辑(静态页或反向代理)
location / {
root /var/www/my-website/dist;
index index.html;
}
# 后端接口代理
location /api/ {
proxy_pass http://127.0.0.1:3000/;
}
}
# 5. 强制把 HTTP 跳转到 HTTPS
server {
listen 80;
server_name www.example.com;
# 301 重定向
return 301 https://$server_name$request_uri;
}
配置完成后nginx -s reload,这个时候访问 http://www.example.com 就会自动跳转到 https://www.example.com,浏览器的小绿锁就出现了!
基本的就上面这些了,你不需要精通所有的 Nginx 指令,只要能掌握静态部署、反向代理、负载均衡和 HTTPS 这几个配置,就已经能够解决 80% 的实际问题了。
以上关于告别 Nginx 配置难题!10 分钟掌握关键技能,新手也能高效搞定配置的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 告别 Nginx 配置难题!10 分钟掌握关键技能,新手也能高效搞定配置
微信
支付宝