一台Nginx虚拟机可以放多个站点,方法有两种:
一、端口绑定
二、域名绑定
①端口绑定来实现一台Nginx虚拟机存放多个站点。
准备两套测试用数据:
cd ~
然后Alt+P
put -r d:/myhtml/
传文件夹要加参数-r
cd ~
ll查看有myhtml文件夹。
cp -r myhtml/* /usr/local/nginx/
因为传的是myhtml文件夹里面的文件夹cart和文件夹search,所以要加参数-r,而且是复制到nginx,不是nginx的html目录下。
然后cd,ll查看检查是否文件夹放置正确。
通过端口区分,更改配置文件nginx.conf
分析部分代码:
server {
listen 81;
server_name localhost;
location / {
root cart; #找root目录即/usr/local/nginx目录下的cart文件夹里面的cart.html文件
index cart.html;
}
}
server {
listen 82;
server_name localhost;
location / {
root search; # #找root目录即/usr/local/nginx目录下的search文件夹里面的search.html文件
index search.html;
}
}
重新加载一下nginx。
cd ~
cd /usr/local/nginx
cd sbin
./nginx -s reload
在主机浏览器进行端口测试。
http://192.168.10.156:81
htttp://192.168.10.156:82
分别在浏览器IP地址框输入以上内容进行测试。
②域名绑定来实现一台Nginx虚拟机存放多个站点。
端口绑定可以实现一台Nginx虚拟机存放多个站点,但实际上来说,通过端口访问,每次需要输入端口号,用户体验就极差了。
80端口只有一个,想让所有的站点都用80端口,这个时候我们就只能通过域名来实现,同一台节点的不同站点共享用相同的端口如默认的80端口,我们用设置域名来实现这个功能。
域名实际访问的还是IP地址。因为从域名到IP,做了一个DNS解析。
域名是分级别的:(三w点是可以省略的)
(1)顶级域名:如:baidu.com
(2)二级域名:如:map.baidu.com
一个顶级域名,最多可以带二十个二级域名,二级域名也是需要DNS解析成对应的IP地址的。
不同的二级域名可以解析到不同的服务器上。
(3)三级域名:如:item.map.baidu.com
如何使用域名:
首先需要购买域名。
域名是全球唯一的,你申请了这个域名,别人就不能申请了。别人申请了,你也申请不了。域名是全球唯一的。
然后需要购买服务器,或者租借服务器,或者托管服务器。
租借的服务器就不是自己的。可以付租金,但是服务器的产权不归你。
还可以自己买服务器,按照自己的配置买,这个服务器是自己的。如果有条件,可以放在自己的机房里。如果没有条件,没有合适的机房,就需要托管,可以放在电信(移动、联通)的机房进行托管。因为电信、移动、联通提供了24小时维护。而且一般不会断电。而且可以租它们的光纤带宽。
这时服务器有了,再就是需要一个外网的IP地址和购买的域名。
我们自己用机器上网的时候有外网IP,但那时会变的外网IP。这里所说的外网IP是一个固定的外网IP。只能给固定的购买它的人用,别人用不了了。
IP只有固定了,才能DNS解析到这个地址,如果总是变,则解析不了。
那在测试环境下,如何方便用域名测试呢?购买域名太贵。而且刚开始用域名,还需要解析域名,快的几分钟,慢的十几个小时,二十四小时生效。而且需要买固定的IP地址。所以:
用到一个软件:
这个软件只能在本机生效。申请的域名,只能在本机用。申请一个百度的域名都行。但,只能在本机使用。换成别的机器访问就不生效了。
这个软件实际上修改的是
C:\Windows\System32\drivers\etc目录下的hosts文件的内容。
解析域名第一步是找这个文件去解析,没有再在网络上去解析。
所以如果在这个文件将域名www.baidu.com 的对应的IP该动,则在浏览器,访问不到真正的百度地址了。
双击软件
多个域名可以绑定在一个IP地址上。但一个域名不能绑定多个IP地址。因为域名通过DNS解析,需要解析到一个固定唯一的IP上。才能知道域名的去向。也就是一个IP地址可以绑定多个域名。
这个时候马上生效,不像真实的域名解析,需要等待,快的几分钟,慢的十几个小时甚至更长时间,才能生效。
然后更改nginx的配置文件。nginx.conf
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name cart.pinyougou.com;
location / {
root cart;
index cart.html;
}
}
server {
listen 80;
server_name search.pinyougou.com;
location / {
root search;
index search.html;
}
}
重载一下nginx
cd /usr/local/nginx
在nginx的sbin目录下:
./nginx -s reload
如果输入:IP:192.168.10.156
对应多个域名,怎么选呢?
选以下这个配置的信息:是nginx的欢迎页面。
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
如:www.pinyougou.com没有在配置文件的 server_name里面,则为默认的值,为nginx的欢迎页面。
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
,如果写了一个配置,如:
server {
listen 80;
server_name www.pinyougou.com;
location / {
root cart;
index cart.html;
}
}
则也为cart.html的内容了。