nginx配置虚拟主机
一、为了不影响主配置的文件,我先加个include
1、进入nginx所在目录
cd /etc/nginx/
2、修改配置
vim nginx.conf
3、在http这段添加一行
http { include /etc/nginx/conf.d/*.conf }
这行表示,配置文件也可也放在/etc/nginx/conf.d/下以conf结尾(默认自带,不带在添加)
二、在data下创建多个站点
1、新建目录
mkdir /data/site1 mkdir /data/site2
2、生成自己的页面
echo /data/site1/index.html > /data/site1/index.html echo /data/site2/index.html > /data/site2/index.html
三、配置虚拟主机
vim /etc/nginx/conf.d/test.conf
server { server_name www.a.net; root /data/site1; } server { server_name www.a.tech www.a.org; root /data/site2; }
这个语句已经包含在http 中了所以可以直接写server
listen 80 默认省略不写
server_name 网站名
root 指定家目录
也可以多个域名,支持通配符,支持正则表达式
四、修改hosts文件
vim /etc/hosts
192.168.1.5 www.a.net www.a.tech
直接访问需要域名解析,我这里就不解析了,直接修改需要访问的hosts文件
五、测试访问
[15:04:17 root@localhost nginx]#curl www.a.net /data/site1/index.html [15:04:59 root@localhost nginx]#curl www.a.tech /data/site2/index.html
六、如何通过IP访问的话,可以设置你需要的页面为默认主机
vim /etc/nginx/conf.d/test.conf
server {
server_name www.a.net ;
root /data/site1;
}
server {
listen 80 default_server;
server_name www.a.tech;
root /data/site2;
}
注意要修改默认的/etc/nginx/nginx.conf,去掉原本里面的server默认server ,我这里用的是1.20版,没在nginx.conf
中,而是在etc/nginx/conf.d下面有个默认的.conf 文件
七、测试访问
curl 192.168.1.5/index.html /data/site2/index.html
支持*通配任意长度的任意字符
server_name *.magedu.com www.magedu.*
支持~起始的字符做正则表达式模式匹配,性能原因慎用
server_name ~^www\d+\.magedu\.com$
说明: \d 表示 [0-9]
匹配优先级机制从高到低
(1) 首先是字符串精确匹配 如:www.magedu.com
(2) 左侧*通配符 如:*.magedu.com
(3) 右侧*通配符 如:www.magedu.*
(4) 正则表达式 如: ~^.*\.magedu\.com$
(5) default_server