本文分享的是前端如何修改nginx配置来调试测试环境

Nginx(发音为 “engine X”)是一款高性能的 开源 Web 服务器,同时也可作为 反向代理服务器、负载均衡器、HTTP 缓存邮件代理服务器。由于其轻量级、高并发处理能力和低资源消耗,Nginx 被广泛用于现代互联网架构中,尤其适合高流量网站和分布式系统。

Nginx 的主要作用

Web 服务器(静态资源服务)

Nginx 最初设计用于高效处理静态文件(如 HTML、CSS、JS、图片等),相比传统服务器(如 Apache):

  • 更低的资源消耗:采用事件驱动(Event-Driven)架构,单线程可处理数千并发连接。
  • 更快的响应速度:优化了静态文件的传输效率,适合 CDN 和内容分发。

典型应用:

  • 托管静态网站(如博客、官网)。
  • 作为前端资源服务器(配合 React/Vue 等 SPA 应用)。

反向代理(Reverse Proxy)

Nginx 可以作为反向代理,接收客户端请求并转发给后端服务器(如 Tomcat、Node.js、PHP-FPM),再返回响应给用户。
核心优势:

  • 隐藏后端服务器:保护真实服务器 IP,提升安全性。
  • 负载均衡:将流量分发到多个后端服务器(见下文)。
  • 缓存加速:缓存动态内容,减少后端压力。

典型配置:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_server;  # 转发到后端
        proxy_set_header Host $host;
    }
}

负载均衡(Load Balancing)

Nginx 可以将流量均匀分配到多个后端服务器,提高系统的可用性和扩展性。
支持的均衡策略:

  • 轮询(Round Robin):默认方式,按顺序分配请求。
  • 加权轮询(Weighted Round Robin):给性能更强的服务器更多流量。
  • IP 哈希(IP Hash):同一用户始终访问同一服务器(适合 Session 保持)。
  • 最少连接(Least Connections):优先分配给当前连接数最少的服务器。

典型配置:

upstream backend {
    server 192.168.1.1 weight=3;  # 权重 3
    server 192.168.1.2;
    server 192.168.1.3 backup;    # 备用服务器
}

server {
    location / {
        proxy_pass http://backend;
    }
}

HTTP 缓存(加速动态内容)

Nginx 可以缓存后端动态生成的页面(如 API 响应),减少重复计算和数据库查询。
适用场景:

  • 高并发读多写少的场景(如新闻网站、商品详情页)。
  • 缓解后端服务器压力。

典型配置:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;

server {
    location / {
        proxy_cache my_cache;
        proxy_pass http://backend;
        proxy_cache_valid 200 302 10m;  # 缓存 200/302 响应 10 分钟
    }
}

SSL/TLS 终止(HTTPS 加速)

Nginx 可以处理 HTTPS 加密/解密,减轻后端服务器的计算负担:

  • 统一管理证书(如 Let’s Encrypt)。
  • 支持 HTTP/2,提升页面加载速度。

典型配置:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://backend;
    }
}

动静分离

将动态请求(如 API)和静态资源(如图片、CSS)分开处理:

  • 静态资源由 Nginx 直接返回,动态请求转发给后端(如 Java/Python)。

典型配置:

server {
    location /static/ {
        alias /var/www/static/;  # 直接返回静态文件
    }

    location /api/ {
        proxy_pass http://backend;  # 转发 API 请求
    }
}

其他用途

  • 邮件代理(IMAP/POP3/SMTP)。
  • WebSocket 代理(支持实时通信应用)。
  • 访问控制(IP 黑白名单、限速)。

如何在VSCode中修改Nginx配置,步骤如下:

找到 Nginx 配置文件

Nginx 的配置文件通常位于:

  • Linux/macOS/etc/nginx/nginx.conf(主配置)或 /etc/nginx/conf.d/(子配置)
  • WindowsC:\nginx\conf\nginx.conf(默认安装路径)
如何快速定位 Nginx 配置文件?
  • 在终端运行:
nginx -t

它会显示 Nginx 加载的配置文件路径,例如:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

在 VSCode 中打开 Nginx 配置文件

使用 VSCode 远程开发(推荐)

  • 如果 Nginx 运行在远程服务器(如 Linux),可以:
  1. 安装 Remote - SSH 插件。
    vscode通过ctrl + shift + x打开右侧的扩展,输入Remote - SSH进行安装。安装完成后要重启vscode。安装成功后,右侧会有一个类似电脑的图标。
  2. 点击电脑图标,如下图所示
  3. 点击配置(齿轮)图标,添加服务
  4. 在打开的config文件中,输入目标服务的配置信息
  5. 配置完成后,就可以在SSH文件夹下看到31服务器45服务器,选择其中的一个服务,在新窗口建立连接,选择Linus,输入密码后,选择打开文件夹,在输入框输入想要访问的文件夹即可。例如:打开etc文件夹
  6. 打开后,找到nginx文件夹,打开nginx.conf文件,此文件中就是对应项目的nginx配置信息。
  7. 完成配置修改后,执行的指令如下:
  1. 检查配置文件是否有语法错误: 在重新加载 Nginx 配置之前,最好检查配置文件是否有语法错误。使用以下命令来检查:
sudo nginx -t

如果一切正常,会显示类似以下的消息:

Copy Codenginx: configuration file /etc/nginx/nginx.conf test is successful
  1. 重新加载 Nginx 配置: 如果配置文件语法没有问题,可以使用以下命令来重新加载 Nginx 配置:
sudo systemctl reload nginx

或者使用:

sudo nginx -s reload

这样,Nginx 会应用对 nginx.conf 文件所做的修改,而无需重启整个 Nginx 服务。

修改 Nginx 配置

Nginx 配置采用 模块化结构,常见修改场景:

(1)配置静态网站
server {
    listen 80;                      # 监听 80 端口(HTTP)
    server_name example.com;        # 域名

    location / {
        root /var/www/html;         # 网站根目录
        index index.html;           # 默认首页
    }
}
(2)配置反向代理(如转发到 Node.js/React/Vue)
server {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://localhost:3000;  # 转发到本地的 Node.js 服务
        proxy_set_header Host $host;
    }
}
(3)配置 HTTPS(SSL 证书)
server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/example.com.crt;     # 证书路径
    ssl_certificate_key /etc/ssl/private/example.com.key;

    location / {
        root /var/www/html;
        index index.html;
    }
}
(4)配置负载均衡
upstream backend {
    server 192.168.1.1:3000;  # 后端服务器 1
    server 192.168.1.2:3000;  # 后端服务器 2
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;  # 请求转发到 upstream
        try_files $uri $uri/ /index.html; # 用于智能匹配请求资源的重要规则
    }
}