在Nginx中配置虚拟主机(Virtual Hosts)是实现多个独立站点在同一服务器上运行的基础,这样每个网站可以有自己的域名、配置和文档根目录。以下是如何在Nginx中配置基于域名的虚拟主机的基本步骤:
1. 创建配置文件
通常的做法是不在主配置文件(如nginx.conf
)中直接配置虚拟主机,而是将其放在单独的文件中,然后在主配置文件中通过include
指令引入它们。例如,在/etc/nginx/conf.d/
目录下创建名为example1.com.conf
和example2.com.conf
的两个文件,分别对应两个不同的域名。
example1.com.conf
server {
listen 80; # 监听HTTP端口,默认80端口
server_name example1.com www.example1.com; # 设置要匹配的域名
root /var/www/example1.com/public_html; # 设置网站根目录
index index.html index.htm index.php; # 设置默认文件
# PHP-FPM配置(如果网站使用PHP)
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; # PHP-FPM监听的sock文件路径
fastcgi_index index.php;
include fastcgi_params;
}
# 日志配置
access_log /var/log/nginx/example1.com.access.log;
error_log /var/log/nginx/example1.com.error.log;
}
example2.com.conf
同样的方式为第二个域名配置虚拟主机:
server {
listen 80;
server_name example2.com www.example2.com;
root /var/www/example2.com/public_html;
index index.html index.htm index.php;
# PHP-FPM配置(如果适用)
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
access_log /var/log/nginx/example2.com.access.log;
error_log /var/log/nginx/example2.com.error.log;
}
2. 修改主配置文件
在Nginx的主配置文件中找到HTTP服务器配置段(http
块内部),添加include
指令引入虚拟主机配置文件:
http {
...
include /etc/nginx/conf.d/*.conf; # 包含conf.d目录下的所有.conf文件
...
}
3. 重启Nginx服务
完成配置文件修改后,确保相应目录结构存在且拥有正确的权限,然后重启Nginx服务以应用配置更改:
sudo systemctl restart nginx
4. DNS配置
最后,确保在DNS服务器上为这两个域名设置了正确的A记录,指向服务器的公网IP地址。
经过以上步骤,当用户访问example1.com
或example2.com
时,Nginx将会根据域名解析到对应的虚拟主机配置,并根据配置的内容提供服务。