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的灵活性会让你逐渐掌握“服务器运维小技巧”!

小夜