插件窝 干货文章 如何使用Nginx实现基于域名的虚拟主机配置

如何使用Nginx实现基于域名的虚拟主机配置

example Nginx com 配置 853    来源:    2025-04-13

使用Nginx实现基于域名的虚拟主机配置

基于域名的虚拟主机允许您在同一台服务器上使用同一个IP地址托管多个网站。以下是配置步骤:

1. 准备工作

确保您已经: - 安装好Nginx - 拥有至少两个域名(例如example1.com和example2.com) - 这些域名已解析到您的服务器IP

2. 配置步骤

2.1 创建网站目录

为每个网站创建单独的目录:

sudo mkdir -p /var/www/example1.com/html
sudo mkdir -p /var/www/example2.com/html

设置适当的权限:

sudo chown -R $USER:$USER /var/www/example1.com/html
sudo chown -R $USER:$USER /var/www/example2.com/html

2.2 创建示例页面

为每个网站创建测试页面:

# 网站1
echo "<h1>Welcome to Example1.com</h1>" > /var/www/example1.com/html/index.html

# 网站2
echo "<h1>Welcome to Example2.com</h1>" > /var/www/example2.com/html/index.html

2.3 创建虚拟主机配置文件

在Nginx的sites-available目录中为每个网站创建配置文件:

sudo nano /etc/nginx/sites-available/example1.com

内容如下:

server {
    listen 80;
    server_name example1.com www.example1.com;

    root /var/www/example1.com/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

同样创建第二个网站的配置文件:

sudo nano /etc/nginx/sites-available/example2.com

内容如下:

server {
    listen 80;
    server_name example2.com www.example2.com;

    root /var/www/example2.com/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

2.4 启用虚拟主机

创建符号链接到sites-enabled目录:

sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/

2.5 测试并重启Nginx

测试配置是否有语法错误:

sudo nginx -t

如果没有错误,重启Nginx:

sudo systemctl restart nginx

3. 可选配置

3.1 禁用默认配置

sudo rm /etc/nginx/sites-enabled/default

3.2 添加SSL支持(使用Let's Encrypt)

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example1.com -d www.example1.com
sudo certbot --nginx -d example2.com -d www.example2.com

4. 验证配置

在浏览器中访问: - http://example1.com - http://example2.com

应该看到各自不同的内容。

5. 常见问题解决

  1. 502 Bad Gateway错误

    • 检查后端服务是否运行
    • 检查Nginx与后端服务的连接配置
  2. 403 Forbidden错误

    • 检查目录权限
    • 确保index文件存在
  3. 域名无法解析

    • 检查DNS设置
    • 确保域名已正确解析到服务器IP

通过以上步骤,您已经成功配置了基于域名的Nginx虚拟主机。