Linux 部署 Nginx:从安装到反向代理配置

1. 前言

Nginx 是 Linux 服务器上非常常用的 Web 服务软件。
它可以用来做:

  • 静态网站服务器;
  • 反向代理;
  • 负载均衡;
  • HTTPS 入口;
  • 前端项目部署;
  • 后端服务网关;
  • 图片、视频等静态资源服务。

本文主要讲解如何在 Linux 上安装 Nginx,并完成一个最常见的反向代理配置。

本文重点包括:

  • Nginx 安装;
  • Nginx 服务管理;
  • 配置文件结构;
  • 静态页面测试;
  • 反向代理配置;
  • 日志查看;
  • 常见问题排查。

2. 安装 Nginx

2.1 Ubuntu / Debian

sudo apt update
sudo apt install nginx -y

查看版本:


nginx -v

启动 Nginx:


sudo systemctl start nginx

设置开机自启:


sudo systemctl enable nginx

查看状态:


sudo systemctl status nginx


2.2 CentOS / RHEL

sudo yum install nginx -y

如果默认仓库没有 Nginx,可以先安装 EPEL 源:


sudo yum install epel-release -y
sudo yum install nginx -y

启动服务:


sudo systemctl start nginx
sudo systemctl enable nginx


3. 测试 Nginx 是否启动成功

本机测试:


curl http://127.0.0.1

如果返回 HTML 内容,说明 Nginx 已经正常工作。

查看监听端口:


ss -lntp | grep ':80'

正常情况下可以看到 Nginx 监听 80 端口。

浏览器访问:


http://服务器IP

如果访问不到,继续检查:


sudo systemctl status nginx
sudo firewall-cmd --list-ports
sudo iptables -L -n

云服务器还要检查安全组是否开放 80 端口。


4. Nginx 常用目录

不同发行版略有差异,但常见路径如下:

路径 作用
/etc/nginx/nginx.conf Nginx 主配置文件
/etc/nginx/conf.d/ 子配置文件目录
/etc/nginx/sites-available/ Debian/Ubuntu 常见站点配置目录
/etc/nginx/sites-enabled/ Debian/Ubuntu 已启用站点配置
/usr/share/nginx/html 默认静态页面目录
/var/www/html 常见网站根目录
/var/log/nginx/access.log 访问日志
/var/log/nginx/error.log 错误日志

查看主配置:


sudo nginx -T

nginx -T 会输出完整配置,适合排查最终生效的配置。


5. Nginx 配置文件结构

一个典型 Nginx 配置大致如下:


user nginx;
worker_processes auto;

events {
    worker_connections 1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    server {
        listen 80;
        server_name example.com;

        location / {
            root /usr/share/nginx/html;
            index index.html;
        }
    }
}

核心结构:


main
 ├── events
 └── http
      └── server
           └── location

配置块 作用
main 全局配置
events 连接处理配置
http HTTP 服务配置
server 一个虚拟主机
location 路由匹配规则

6. 配置静态页面

创建网站目录:


sudo mkdir -p /var/www/demo

创建首页:


echo "Hello Nginx" | sudo tee /var/www/demo/index.html

创建配置文件:


sudo vim /etc/nginx/conf.d/demo.conf

写入:


server {
    listen 80;
    server_name _;

    location / {
        root /var/www/demo;
        index index.html;
    }
}

检查配置:


sudo nginx -t

重载 Nginx:


sudo systemctl reload nginx

访问:


curl http://127.0.0.1


7. Nginx 反向代理是什么

反向代理可以理解为:


客户端访问 Nginx
Nginx 再转发请求给后端服务
后端返回结果给 Nginx
Nginx 再返回给客户端

例如后端服务运行在:


127.0.0.1:8080

用户访问:


http://example.com/api

Nginx 把请求转发到:


http://127.0.0.1:8080

这样用户不需要直接访问后端端口。


8. 配置反向代理

假设后端服务监听:


127.0.0.1:8080

Nginx 配置:


server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;

        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;
    }
}

保存后检查配置:


sudo nginx -t

重载:


sudo systemctl reload nginx


9. proxy_pass 末尾斜杠问题

Nginx 中 proxy_pass 末尾有没有 /,行为不一样。

示例一:


location /api/ {
    proxy_pass http://127.0.0.1:8080/;
}

请求:


/api/user

转发到:


/user

示例二:


location /api/ {
    proxy_pass http://127.0.0.1:8080;
}

请求:


/api/user

转发到:


/api/user

这点非常容易踩坑。
如果后端接口路径不对,优先检查 proxy_pass 的斜杠。


10. 常用代理头


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;

含义:

Header 作用
Host 保留原始域名
X-Real-IP 传递真实客户端 IP
X-Forwarded-For 记录代理链路中的客户端 IP
X-Forwarded-Proto 传递 HTTP/HTTPS 协议

后端服务如果需要获取真实 IP,通常要依赖这些 Header。


11. Nginx 日志查看

访问日志:


tail -f /var/log/nginx/access.log

错误日志:


tail -f /var/log/nginx/error.log

查找 500 错误:


grep " 500 " /var/log/nginx/access.log

查看最近错误:


tail -n 100 /var/log/nginx/error.log


12. 常见问题排查

12.1 配置文件语法错误

检查:


sudo nginx -t

如果有错误,会显示具体文件和行号。


12.2 端口被占用

sudo ss -lntp | grep ':80'

如果 80 被其他程序占用,Nginx 会启动失败。


12.3 反向代理 502

常见原因:

  • 后端服务没启动;
  • 后端端口写错;
  • 后端只监听 127.0.0.1 或监听地址不对;
  • 防火墙拦截;
  • proxy_pass 地址错误。

排查:


curl http://127.0.0.1:8080
tail -f /var/log/nginx/error.log


12.4 修改配置不生效

修改配置后需要:


sudo nginx -t
sudo systemctl reload nginx

如果只是保存文件,不 reload,配置不会生效。


13. 小结

Linux 部署 Nginx 的核心流程:


安装 Nginx
↓
启动并设置开机自启
↓
确认 80 端口监听
↓
配置 server 和 location
↓
nginx -t 检查配置
↓
systemctl reload nginx 重载
↓
查看 access.log 和 error.log 排查问题

常用命令:


sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo nginx -t
sudo systemctl reload nginx
ss -lntp | grep ':80'
tail -f /var/log/nginx/error.log

掌握这些内容后,就可以继续学习静态网站部署、HTTPS 配置、负载均衡和更复杂的反向代理场景。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐