在现代 Web 开发中,Nginx 是一个非常流行的高性能 Web 服务器和反向代理服务器。它不仅可以高效地处理静态资源,还能通过虚拟主机功能同时托管多个网站或 API 服务。本教程将手把手教你如何为不同的域名或路径配置 Nginx 虚拟主机,并专门针对 API 服务进行优化设置,即使你是刚接触服务器配置的小白,也能轻松上手。
虚拟主机(Virtual Host)是指在一台物理服务器上运行多个独立的网站或服务。Nginx 通过 server 块来定义每个虚拟主机,根据请求的域名(server_name)或端口来区分不同的站点。
例如,你可以让 api.example.com 指向你的后端 API 服务,而 www.example.com 指向前端页面,两者共用同一个服务器但互不干扰。
Nginx 的配置文件通常位于 /etc/nginx/ 目录下。我们建议为每个站点单独创建配置文件,便于管理。
假设我们要为 api.yourdomain.com 配置一个 API 虚拟主机:
# 创建配置文件sudo nano /etc/nginx/sites-available/api.yourdomain.com 在打开的编辑器中,输入以下内容(请根据你的实际情况修改域名和后端地址):
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; }} 这段配置的作用是:
api.yourdomain.com 时,匹配该 server 块proxy_pass 转发到本地 3000 端口(即你的 API 服务)创建软链接以启用站点:
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(如 /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服务器配置、反向代理设置。
本文由主机测评网于2025-11-28发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025111008.html