一直用vagrant + virtual box 环境开发,通过端口映射来通信,比如虚拟机 guest
的80端口映射宿主机 host
的8080端口,并且为不同的站点配置不同的端口,举例如下
有一个bbs的项目,我先在vagrant的Vagrantfile添加一行
config.vm.network "forwarded_port", guest: 80, host: 8080
然后在nginx配置(具体配置步骤不展开)
listen 80;
root /var/www/bbs/public;
index index.php index.html index.htm;
server_name 127.0.0.1;
然后在本地访问 http://127.0.0.1:8080
来访问bbs项目
现在配置一个新的站点,又得重复这样的工作,在Vagrantfile配一条新的
config.vm.network "forwarded_port", guest: 81, host: 8081
为新站点配置nginx
listen 81;
root /var/www/new/public;
index index.php index.html index.htm;
server_name 127.0.0.1;
然后在本地访问 http://127.0.0.1:8081
来访问new项目
每次都要在Vagrantfile加一条实在麻烦,而且我的虚拟机启动很慢,所以改用下面一劳永逸的办法,不需要修改Vagrantfile文件(但是要修改hosts)
为了不每次都打端口,把主机的端口也改成80,修改Vagrantfile
config.vm.network "forwarded_port", guest: 80, host: 80
得确保你本地的80端口不被其他程序占用,然后来到nginx
listen 80;
root /var/www/bbs/public;
index index.php index.html index.htm;
# 这里起一个server_name,名字随意,最好有意义
server_name bbs.website.com;
然后修改 hosts
文件(目录:C:\Windows\System32\drivers\etc
)文末添加一行
127.0.0.1 bbs.website.com
现在你就能直接通过 http://bbs.website.com
来访问bbs站点了
现在,添加一个站点new,这时候不再需要往Vagrantfile添加一行配置,添加nginx配置
listen 80;
root /var/www/new/public;
index index.php index.html index.htm;
# 这是new站点的server_name
server_name new.website.com;
然后同样在 hosts
文件添加一行
127.0.0.1 new.website.com
同样的道理,使用 http://new.website.com
来访问new站点
虽然这种做法每添加一个站点就要配置一条hosts,但是比修改Vagrantfile然后重启要强的多,而且不用在url上加上端口,host的名字也好记!