Nginx虚拟主机代理设置(手把手教你用Nginx实现多网站共存与反向代理)

V5主机测评

在搭建网站或部署多个Web应用时,你可能会遇到一个问题:一台服务器如何同时运行多个网站?这时候,Nginx虚拟主机反向代理功能就派上用场了。本教程将从零开始,带你一步步配置Nginx虚拟主机,实现基于域名的多站点访问,并通过反向代理将请求转发到后端服务。

什么是Nginx虚拟主机?

Nginx虚拟主机(Virtual Host)是指在一台物理服务器上,通过Nginx配置多个独立的网站,每个网站可以拥有自己的域名、根目录和访问规则。这不仅能节省服务器成本,还能提高资源利用率。

准备工作

  • 一台安装了Nginx的Linux服务器(如Ubuntu/CentOS)
  • 至少两个域名(或本地hosts文件模拟)
  • 基本的命令行操作能力
Nginx虚拟主机代理设置(手把手教你用Nginx实现多网站共存与反向代理)

步骤一:创建网站目录

假设我们要部署两个网站:site1.example.comsite2.example.com。首先,在服务器上创建对应的目录:

$ sudo mkdir -p /var/www/site1$ sudo mkdir -p /var/www/site2  

然后为每个目录添加一个简单的测试页面:

$ echo "<h2>欢迎访问 Site 1</h2>" | sudo tee /var/www/site1/index.html$ echo "<h2>欢迎访问 Site 2</h2>" | sudo tee /var/www/site2/index.html  

步骤二:配置Nginx虚拟主机

进入Nginx的站点配置目录(通常为 /etc/nginx/sites-available/),创建两个配置文件:

$ sudo nano /etc/nginx/sites-available/site1.conf  

写入以下内容:

server {    listen 80;    server_name site1.example.com;    root /var/www/site1;    index index.html;    location / {        try_files $uri $uri/ =404;    }}  

同样地,为 site2 创建配置文件:

$ sudo nano /etc/nginx/sites-available/site2.conf  
server {    listen 80;    server_name site2.example.com;    root /var/www/site2;    index index.html;    location / {        try_files $uri $uri/ =404;    }}  

步骤三:启用虚拟主机

创建符号链接,将配置文件链接到 sites-enabled 目录:

$ sudo ln -s /etc/nginx/sites-available/site1.conf /etc/nginx/sites-enabled/$ sudo ln -s /etc/nginx/sites-available/site2.conf /etc/nginx/sites-enabled/  

检查Nginx配置是否正确:

$ sudo nginx -t  

如果显示“syntax is ok”,则重新加载Nginx:

$ sudo systemctl reload nginx  

步骤四:配置反向代理(进阶)

如果你有一个后端服务(比如运行在3000端口的Node.js应用),你可以通过Nginx反向代理将域名请求转发给它。修改 site1.conf 如下:

server {    listen 80;    server_name api.example.com;    location / {        proxy_pass http://127.0.0.1:3000;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;    }}  

这样,访问 http://api.example.com 就会自动代理到本地3000端口的服务。这是实现Web服务器配置灵活性的关键技巧。

步骤五:本地测试(无真实域名时)

如果没有真实域名,可以在本地电脑的 hosts 文件中添加映射:

# Windows: C:\Windows\System32\drivers\etc\hosts# macOS/Linux: /etc/hosts你的服务器IP site1.example.com你的服务器IP site2.example.com  

保存后,浏览器访问 http://site1.example.com 即可看到对应网站。

常见问题排查

  • 403 Forbidden:检查目录权限,确保Nginx用户(通常是www-data或nginx)有读取权限。
  • 404 Not Found:确认root路径和index文件是否存在。
  • 配置未生效:记得执行 nginx -t 检查语法,并重载服务。

总结

通过本教程,你已经掌握了如何使用Nginx虚拟主机在同一台服务器上托管多个网站,并学会了如何配置反向代理来转发请求。这些技能对于运维人员、开发者乃至个人站长都至关重要。无论你是想节省服务器成本,还是构建微服务架构,域名绑定Web服务器配置都是基础中的基础。

现在,动手试试吧!你会发现Nginx不仅强大,而且配置起来非常直观。

文章版权声明:除非注明,否则均为V5主机测评网_性价比VPS_性价比云服务器_免费独立服务器原创文章,转载或复制请以超链接形式并注明出处。