Nginx 简明使用指南
【摘要】 Nginx 是一款高性能的 HTTP 服务器与反向代理,以轻量、稳定、并发能力强著称。本文整理日常最常用的配置与用法,帮助你快速上手。 一、安装 Ubuntu / Debiansudo apt updatesudo apt install nginx CentOS / RHELsudo yum install epel-releasesudo yum install nginx安装完成后,启...
Nginx 是一款高性能的 HTTP 服务器与反向代理,以轻量、稳定、并发能力强著称。本文整理日常最常用的配置与用法,帮助你快速上手。
一、安装
Ubuntu / Debian
sudo apt update
sudo apt install nginx
CentOS / RHEL
sudo yum install epel-release
sudo yum install nginx
安装完成后,启动并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
浏览器访问服务器 IP,看到 “Welcome to nginx!” 即表示安装成功。
二、常用命令
| 命令 | 作用 |
|---|---|
nginx -t |
测试配置文件语法是否正确 |
nginx -s reload |
平滑重载配置(不中断服务) |
nginx -s stop |
快速停止 |
nginx -s quit |
优雅停止(处理完当前请求) |
systemctl status nginx |
查看运行状态 |
systemctl restart nginx |
重启服务 |
修改配置后,养成
nginx -t先校验再reload的习惯,可避免配置错误导致服务中断。
三、目录结构
/etc/nginx/
├── nginx.conf # 主配置文件
├── conf.d/ # 自定义配置(推荐放这里)
├── sites-available/ # 可用站点配置(Debian 系)
├── sites-enabled/ # 已启用站点(软链接到 available)
└── mime.types # MIME 类型映射
/var/www/html/ # 默认网站根目录
/var/log/nginx/ # 日志目录(access.log / error.log)
四、配置静态网站
最基础的场景:用 Nginx 托管一个静态目录。
新建 /etc/nginx/conf.d/my-site.conf:
server {
listen 80;
server_name example.com;
root /var/www/my-site;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
说明:
listen 80:监听 80 端口。server_name:匹配的域名或 IP。root:网站文件根目录。index:默认访问的首页文件。try_files:按顺序查找文件,找不到则返回 404。
配置完成后:
sudo nginx -t && sudo nginx -s reload
五、反向代理
将前端请求转发到后端服务(如运行在 3000 端口的 Node 应用):
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
几个常用的 proxy_set_header:
Host:保留原始请求头中的 Host。X-Real-IP:把客户端真实 IP 传给后端。X-Forwarded-For:记录代理链路上的 IP 列表。X-Forwarded-Proto:告知后端原始协议是 http 还是 https。
六、负载均衡
当后端有多个实例时,用 upstream 做负载均衡:
upstream backend {
server 127.0.0.1:3001;
server 127.0.0.1:3002;
server 127.0.0.1:3003;
}
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://backend;
}
}
常用调度策略:
| 策略 | 写法 | 说明 |
|---|---|---|
| 轮询(默认) | server 127.0.0.1:3001; |
依次分配 |
| 权重 | server 127.0.0.1:3001 weight=3; |
按权重分配 |
| IP 哈希 | 在 upstream 内加 ip_hash; |
同一 IP 固定访问同一后端 |
| 最少连接 | 在 upstream 内加 least_conn; |
优先分配给连接数少的后端 |
七、HTTPS 配置
使用 Let’s Encrypt 免费证书最简单的方式:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
Certbot 会自动修改 Nginx 配置并设置定时续期。
手动配置 HTTPS 的模板:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
root /var/www/my-site;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
# HTTP 跳转到 HTTPS
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
八、Gzip 压缩
开启压缩可显著减少传输体积:
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
gzip_min_length 1024;
gzip_comp_level 5;
九、常见问题排查
- 配置不生效:先
nginx -t检查语法,再确认是否reload。 - 端口被占用:
sudo lsof -i:80查看占用进程,或改用其他端口。 - 403 Forbidden:通常是文件权限问题,确保 Nginx 用户(如
www-data)对根目录有读权限。 - 502 Bad Gateway:后端服务未启动或端口不对,检查
proxy_pass地址。 - 查看日志:
sudo tail -f /var/log/nginx/error.log sudo tail -f /var/log/nginx/access.log
十、小结
| 场景 | 关键指令 |
|---|---|
| 静态托管 | root + index + try_files |
| 反向代理 | proxy_pass + proxy_set_header |
| 负载均衡 | upstream + proxy_pass |
| HTTPS | ssl_certificate + listen 443 ssl |
| 压缩 | gzip on + gzip_types |
Nginx 的强大远不止于此(缓存、限流、重写、WebSocket 等),但掌握以上基础已能覆盖绝大多数日常需求。遇到问题多看 error.log,配置改动坚持 nginx -t 先校验,就能少踩很多坑。 |
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)