在CentOS 7系统中,Nginx作为高性能的Web服务器和反向代理,其虚拟主机(vhost)配置是实现多网站托管的核心功能,通过合理配置vhost,可以在单台服务器上运行多个独立的网站,每个域名对应独立的目录、配置和访问权限,既提升资源利用率,又确保各网站间安全隔离,以下是CentOS 7环境下Nginx vhost的详细配置步骤与注意事项。

环境准备与Nginx安装
在配置vhost前,需确保系统已安装Nginx,CentOS 7默认使用yum包管理器,可通过以下命令安装:
sudo yum update -y sudo yum install epel-release -y sudo yum install nginx -y
安装完成后,启动Nginx并设置开机自启:
sudo systemctl start nginx sudo systemctl enable nginx
通过浏览器访问服务器IP,若显示“Welcome to Nginx!”页面,则安装成功。
创建网站目录与权限
每个vhost需对应独立的网站根目录,以配置两个示例域名(www.example1.com和www.example2.com)为例,创建目录并设置权限:
sudo mkdir -p /var/www/example1.com/html sudo mkdir -p /var/www/example2.com/html
将网站文件分别放入对应目录,并设置所有者为Nginx运行用户(默认为nginx):
sudo chown -R nginx:nginx /var/www/example1.com/html sudo chown -R nginx:nginx /var/www/example2.com/html sudo chmod -R 755 /var/www
创建Nginx vhost配置文件
Nginx的vhost配置文件通常存放在/etc/nginx/conf.d/目录下,以.conf为后缀,为每个域名创建独立的配置文件,
sudo vim /etc/nginx/conf.d/example1.com.conf
在文件中写入以下基础配置:

server {
listen 80;
server_name www.example1.com example1.com;
root /var/www/example1.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
} 参数说明:
listen 80:监听80端口(HTTP);server_name:域名及泛域名;root:网站根目录;index:默认首页文件。
按相同方法创建example2.com.conf,仅修改server_name和root路径即可。
配置SSL证书(可选)
若需启用HTTPS,需先申请SSL证书(可使用Let’s Encrypt免费证书),并在配置文件中添加SSL相关指令:
server {
listen 443 ssl;
server_name www.example1.com;
root /var/www/example1.com/html;
index index.html;
ssl_certificate /etc/letsencrypt/live/example1.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example1.com/privkey.pem;
location / {
try_files $uri $uri/ =404;
}
} 需在HTTP配置中添加301重定向,将HTTP请求强制跳转至HTTPS:
server {
listen 80;
server_name www.example1.com example1.com;
return 301 https://$host$request_uri;
} 加载测试与重启服务
配置完成后,需检查Nginx配置语法是否正确:
sudo nginx -t
若显示“syntax is ok”和“test is successful”,则重启Nginx使配置生效:
sudo systemctl restart nginx
防火墙与SELinux配置
确保防火墙允许HTTP(80)和HTTPS(443)端口访问:

sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
若开启SELinux,需安装nginx SELinux模块并设置策略:
sudo yum install policycoreutils-python -y sudo semanage port -a -t http_port_t -p tcp 80 sudo semanage port -a -t http_port_t -p tcp 443
常见问题排查
若无法访问网站,可按以下步骤排查:
- 检查域名解析:确保域名DNS记录指向服务器IP;
- 检查目录权限:确认
/var/www目录及子目录权限为755,文件权限为644; - 查看Nginx错误日志:通过
/var/log/nginx/error_log定位问题; - 检查SELinux状态:临时关闭SELinux(
sudo setenforce 0)测试是否为策略问题。
相关问答FAQs
Q1:如何为Nginx vhost配置访问日志?
A:在vhost配置文件的server块中添加以下指令:
access_log /var/log/nginx/example1.com_access.log combined; buffer=32k flush=1m;
combined为日志格式,/var/log/nginx/example1.com_access.log为日志文件路径,可根据需求调整缓冲区大小。
Q2:如何实现Nginx vhost的负载均衡?
A:在http块中定义upstream服务器组,然后在server块中使用proxy_pass代理请求。
http {
upstream backend {
server 192.168.1.10:8000;
server 192.168.1.11:8000;
}
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://backend;
}
}
} 可结合weight、backup等参数实现负载均衡策略。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复