1. 什么是Nginx?¶
Nginx是一款高性能的HTTP和反向代理服务器,常用于搭建网站、负载均衡或作为后端服务的“门面”。对于新手来说,它的核心优势是轻量、稳定,且反向代理功能能让你轻松将客户端请求转发到后端服务(比如Node.js、Python等应用)。
2. 安装Nginx¶
不同Linux发行版安装命令略有不同,这里以最常见的Ubuntu/Debian和CentOS/RHEL为例。
2.1 Ubuntu/Debian系统
打开终端,执行以下命令:
# 更新软件包列表
sudo apt update
# 安装Nginx(-y自动确认安装)
sudo apt install nginx -y
2.2 CentOS/RHEL系统
# 安装Nginx
sudo yum install nginx -y
验证安装是否成功
安装完成后,执行以下命令查看Nginx版本:
nginx -v # 显示版本信息,如“nginx version: nginx/1.18.0”
3. 启动与基础管理¶
安装后需要启动Nginx,并设置开机自启,避免服务器重启后服务失效。
3.1 启动Nginx
# Ubuntu/Debian/CentOS通用
sudo systemctl start nginx
3.2 设置开机自启
sudo systemctl enable nginx
3.3 检查Nginx状态
sudo systemctl status nginx
若显示“active (running)”,则Nginx已正常运行。
3.4 常用管理命令
- 停止Nginx:sudo systemctl stop nginx
- 重启Nginx:sudo systemctl restart nginx
- 重载配置(无需停止服务):sudo systemctl reload nginx(修改配置后必须执行,否则不生效)
4. 基本配置文件说明¶
Nginx的配置由多个文件组成,核心是主配置文件和站点配置文件。新手只需关注站点配置即可。
4.1 主配置文件
位置:/etc/nginx/nginx.conf
作用:定义全局设置(如工作进程数、日志路径等),一般无需修改。
4.2 站点配置文件
位置:/etc/nginx/conf.d/(推荐)或 /etc/nginx/sites-available/
每个站点对应一个.conf文件(如default.conf或自定义名称)。
示例:假设你有一个后端服务运行在本地3000端口(如Node.js应用),需要让Nginx将80端口的请求转发到3000端口。
5. 反向代理配置详解¶
反向代理的核心是“客户端请求→Nginx→后端服务”,Nginx相当于“中间人”。以下是具体配置步骤。
5.1 新建站点配置文件
以myapp.conf为例,执行:
sudo nano /etc/nginx/conf.d/myapp.conf
(nano是文本编辑器,也可用vim,新手推荐nano,按Ctrl+X保存退出)
5.2 写入反向代理配置
将以下内容粘贴到myapp.conf中,保存退出:
server {
# 监听80端口(HTTP默认端口)
listen 80;
# 可填域名或服务器IP(如example.com或192.168.1.100)
server_name localhost;
# 匹配所有客户端请求(/表示所有路径)
location / {
# 后端服务地址(这里转发到本地3000端口,需确保后端服务已启动)
proxy_pass http://127.0.0.1:3000;
# 传递客户端信息给后端(避免后端获取不到真实IP和域名)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
5.3 关键参数解释
- listen 80;:Nginx监听的端口(HTTP默认80,HTTPS用443)。
- server_name:访问的域名或IP(若没有域名,填localhost或服务器公网IP)。
- proxy_pass:后端服务地址(格式为http://ip:端口或https://ip:端口,必须以http:///https://开头)。
- proxy_set_header:传递HTTP头信息,Host $host让后端知道客户端请求的域名,X-Real-IP $remote_addr让后端记录真实IP。
6. 配置生效与测试¶
配置完成后,需先检查语法是否有误,再重载配置,最后测试效果。
6.1 检查配置语法
sudo nginx -t
若显示“test is successful”,则配置无误;若提示错误,根据提示修改配置文件。
6.2 重载配置
sudo systemctl reload nginx
(无需重启Nginx,直接生效新配置)
6.3 测试反向代理
假设后端服务运行在3000端口(如curl http://127.0.0.1:3000能返回内容),则:
- 用浏览器访问http://服务器IP(或localhost),应看到后端服务返回的内容。
- 或用终端命令快速测试:
curl -I http://localhost # 查看响应头是否正确
7. 注意事项¶
- 防火墙开放:确保服务器防火墙允许80/443端口通过。
- Ubuntu:
sudo ufw allow 80/tcp(需先启用ufw:sudo ufw enable) - CentOS:
sudo firewall-cmd --add-port=80/tcp --permanent && sudo firewall-cmd --reload - 后端服务状态:若后端服务未启动,Nginx会显示“502 Bad Gateway”(检查后端是否正常运行,如
netstat -tulnp | grep 3000)。 - 路径错误:
proxy_pass必须以http:///https://开头,且后端地址不能遗漏端口(如http://127.0.0.1:3000而非http://127.0.0.1)。
8. 常见问题¶
- 访问404:检查后端服务是否启动,或
proxy_pass地址是否正确(比如后端是/api路径,需确保location规则匹配)。 - HTTPS反向代理:若后端服务是HTTPS(如
https://127.0.0.1:443),proxy_pass需改为https://127.0.0.1:443,并可能需要添加proxy_ssl_server_name on;。
通过以上步骤,你已完成Nginx的安装与反向代理配置。后续可尝试配置HTTPS、负载均衡等进阶功能,Nginx的灵活性会让你逐渐掌握“服务器运维小技巧”!