之前一直使用笔记本的虚拟机来模拟服务器环境,但是性能有限,每次听到风扇的狂叫声就胆战心惊,怕笔记本挂了。加之平时又用另一台超薄本工作,一到调试的时候又得转换机器,太过麻烦了。
家里的树莓派玩了一段时间一直在吃灰中,索性拿来架个服务器,至少在家里可以随时访问调试,挺好。
树莓派的lnmp早就安装完毕,甚至还弄过一个nextcloud玩,就是性能太弱,没再用。
VM虚拟机上新建了多个虚拟主机,干脆树莓派也一样,具体操作过程可参考本站的另外两篇文章《本地Nginx上新建多个虚拟主机》和《树莓派3B+上利用OneinStack安装lnmp》。
那么问题来了,在VM虚拟机中我是本地访问,所以修改hosts文件是可行的,在家庭局域网中又该怎么访问呢?
安装在默认文件夹default下的系统,通过树莓派的ip地址访问是可以的,但是其他几个系统怎么办呢?因为指向的是同一个地址,系统需要通过什么来区分呢?
是否可以通过修改端口号来实现呢?不同系统对应不同的端口号,通过浏览器访问就能模拟出不同的站点。
一、虚拟主机的三种访问模式
1. 域名
域名是最好理解的访问方式,我们在浏览器中输入网址就能出现自己想要浏览的网站。
在虚拟机中我们可以通过修改hosts文件达到域名访问的目的(见前文中推荐的文章)。
2. IP地址
为什么浏览器知道域名指向哪里呢?其实是通过DNS域名解析做到的。所以真正访问的是服务器的ip地址,然后根据配置进入相应的站点。
很多时候我们申请一台服务器,虽然只有一个IP地址,但是可以将不同的域名映射到不同的虚拟主机并访问不同的目录达到进入不同网站的效果。这在我们真实网络环境中比较常见,就好比MindSeed的各个子站,有不同的域名和系统但只有一台服务器。
所以如果你输入IP地址,只会进入默认的网站却不会乱窜到其他上面。
3. 端口
那么只有一个IP地址,又没有域名可以映射呢?或者是针对内网和外网有不同的访问方式呢?我们就可以通过监听同一个IP的不同端口来实现访问不同虚拟主机。
以上只是我的肤浅理解,并不专业,如有错误还请指正。
二、修改配置文件(基于端口)
因为oneinstack新增虚拟主机都会新建一个配置文件,我们找到其中一个,将端口号改成自己觉得合适的数字。
server {
listen 8060;
server_name www.mysurvey.com;
……
}
这里的server_name是为了方便在树莓派上直接访问用的(修改本地hosts文件)。
重新加载配置文件。
nginx -s reload
打开浏览器,输入树莓派的ip地址和端口号,成功。
这下再也不用来回换电脑了,直接在树莓派中调试就行了。