当前位置:首页 > 服务器技术 > 正文

Nginx虚拟主机API配置(从零开始搭建多站点与API服务)

在现代 Web 开发中,Nginx 是一个非常流行的高性能 Web 服务器和反向代理服务器。它不仅可以高效地处理静态资源,还能通过虚拟主机功能同时托管多个网站或 API 服务。本教程将手把手教你如何为不同的域名或路径配置 Nginx 虚拟主机,并专门针对 API 服务进行优化设置,即使你是刚接触服务器配置的小白,也能轻松上手。

Nginx虚拟主机API配置(从零开始搭建多站点与API服务) Nginx虚拟主机 Nginx API配置 Web服务器配置 反向代理设置 第1张

什么是 Nginx 虚拟主机?

虚拟主机(Virtual Host)是指在一台物理服务器上运行多个独立的网站或服务。Nginx 通过 server 块来定义每个虚拟主机,根据请求的域名(server_name)或端口来区分不同的站点。

例如,你可以让 api.example.com 指向你的后端 API 服务,而 www.example.com 指向前端页面,两者共用同一个服务器但互不干扰。

准备工作

  • 一台安装了 Nginx 的 Linux 服务器(Ubuntu/CentOS 等)
  • 你拥有至少一个域名,并已正确解析到服务器 IP
  • 后端 API 服务正在运行(如 Node.js、Python Flask、Java Spring Boot 等)

步骤一:创建 API 虚拟主机配置文件

Nginx 的配置文件通常位于 /etc/nginx/ 目录下。我们建议为每个站点单独创建配置文件,便于管理。

假设我们要为 api.yourdomain.com 配置一个 API 虚拟主机:

# 创建配置文件sudo nano /etc/nginx/sites-available/api.yourdomain.com

步骤二:编写 Nginx 虚拟主机配置

在打开的编辑器中,输入以下内容(请根据你的实际情况修改域名和后端地址):

server {    listen 80;    server_name api.yourdomain.com;    location / {        proxy_pass http://127.0.0.1:3000;  # 假设你的 API 运行在本地 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;    }    # 可选:限制 API 请求方法    if ($request_method !~ ^(GET|POST|PUT|DELETE)$) {        return 405;    }}

这段配置的作用是:

  • 监听 80 端口(HTTP)
  • 当请求域名是 api.yourdomain.com 时,匹配该 server
  • 所有请求通过 proxy_pass 转发到本地 3000 端口(即你的 API 服务)
  • 传递必要的请求头,确保后端能获取真实客户端信息

步骤三:启用配置并重载 Nginx

创建软链接以启用站点:

sudo ln -s /etc/nginx/sites-available/api.yourdomain.com /etc/nginx/sites-enabled/

测试配置是否正确:

sudo nginx -t

如果显示 “syntax is ok” 和 “test is successful”,说明配置无误。接着重载 Nginx:

sudo systemctl reload nginx

进阶技巧:为多个 API 服务配置路径路由

如果你只有一个域名,但想通过不同路径访问不同 API(如 /user-api/order-api),可以这样配置:

server {    listen 80;    server_name yourdomain.com;    location /user-api/ {        proxy_pass http://127.0.0.1:3001/;  # 注意结尾的斜杠!        proxy_set_header ...    }    location /order-api/ {        proxy_pass http://127.0.0.1:3002/;        proxy_set_header ...    }}

注意:proxy_pass 末尾的斜杠会影响 URL 重写行为,务必根据需求调整。

总结

通过以上步骤,你已经成功配置了 Nginx 虚拟主机来托管 API 服务。这种配置方式不仅提升了服务器资源利用率,还增强了系统的可维护性和安全性。无论你是部署 RESTful API、GraphQL 服务,还是微服务架构,Nginx 虚拟主机反向代理设置都是不可或缺的基础技能。

记住定期检查日志(/var/log/nginx/error.log)以排查问题,并考虑为生产环境添加 HTTPS 支持(使用 Let's Encrypt 免费证书)。

本文关键词:Nginx虚拟主机Nginx API配置Web服务器配置反向代理设置