虚拟主机
虚拟主机的概念
虚拟主机,就是把一台物理服务器划分成多个“虚拟”的服务器,每一个虚拟主机都可以有独立的域名和独立的目录
配置
server{
listen 80;
server_name www.1.com; #域名
index 1.html; #设置默认页面就是/data/wwwroot/www.1.com目录下的1.html文件,如果不设置index属性那默认访问/data/wwwroot/www.1.com目录下的index.html文件
root /data/wwwroot/www.1.com; #默认网页所在
}
泛解析: server_name的值可以用*,比如*.1.com,此时访问就可以使用a.1.com进行访问
server{
listen 80;
server_name *.1.com; #域名
index 1.html; #设置默认页面就是/data/wwwroot/www.1.com目录下的1.html文件,如果不设置index属性那默认访问/data/wwwroot/www.1.com目录下的index.html文件
root /data/wwwroot/www.1.com; #默认网页所在
}
多域名:server_name的值可以有很多个,如www.1.com
server{
listen 80;
server_name www.1.com www.2.com; #域名
index 1.html; #设置默认页面就是/data/wwwroot/www.1.com目录下的1.html文件,如果不设置index属性那默认访问/data/wwwroot/www.1.com目录下的index.html文件
root /data/wwwroot/www.1.com; #默认网页所在
}
如果一个域名配置在同一个端口上,这时nginx只会用一个,后面的将会被忽略,但是如果同样的域名配置在不同的端口上就可以生效
访问
测试:curl -x127.0.0.1:80 www.1.com
外部访问,首先需要配置虚拟域名(虚拟机与外部都要配置)
nginx如果访问不到页面是报的403错误。
默认虚拟主机
如果你只定义了www.1.com主机,但是别人又访问了www.2.com,此时会访问配置的第一个虚拟主机,这个主句称为默认虚拟主机
也可以指定
server{
listen 80 default_server;#这里default_server就是设置为默认虚拟主机
server_name www.2.com;
root /data/wwwroot/www.2.com;
}
同时也可以拒绝默认虚拟主机,当用户访问一个不存在的地址时,报403
server{
listen 80 default_server;#这里default_server就是设置为默认虚拟主机
deny all;#禁止默认虚拟主机
}
问题
如果访问出现403问题,又不是配置出问题,则需要关闭或修改selinux(centos7是默认开启的),这是一个安全管理的东西,为了减少学习成本,可以将其关闭