我的问题:
我只能通过端口8000访问我的网站,但不能通过80访问我的网站,这让我觉得它没有重定向80到8000,因为它应该是。我想简单地在我的浏览器中键入local.kujif.com并加载该站点,我在默认情况下读取的是端口80。我使用curl检查它并返回:
curl 'http://local.kujif.com'
curl: (7) Failed connect to local.kujif.com:80; No error
但是,如果我在网址中添加:8000则可以正常工作;它返回我的index.php,它只是打印' test':
curl 'http://local.kujif.com:8000'
test
我的详细信息:
我正在使用Laravel Homestead和Vagrant与Oracle VM VirtualBox。
在Homestead.rb中,它具有端口转发功能。我根本没有编辑过它:
config.vm.network "forwarded_port", guest: 80, host: 8000
config.vm.network "forwarded_port", guest: 3306, host: 33060
config.vm.network "forwarded_port", guest: 5432, host: 54320
我也为我的工作安装了Microsoft IIS。每当我需要vagrant使用localhost时,我显然会停止该服务。
"流浪"所示:
My Homestead.yaml文件:
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
authorize: /Users/Tyler/.ssh/id_rsa.pub
keys:
- /Users/Tyler/.ssh/id_rsa
folders:
- map: C:\DEV\Linux
to: /var/www/
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
- map: local.kujif.com
to: /var/www/kujif
variables:
- key: APP_ENV
value: local
答案 0 :(得分:8)
你应该继续使用1024以上的端口,因为它们是非特权端口,但如果你确实希望你可以在Homestead VM上作为端口80运行,只要你没有任何东西坚持主机上的端口。只是尝试了它,它有效,有一些陷阱。首先,您从.rb文件中更改该行:
config.vm.network" forwarded_port",guest:80,host:8000
到
config.vm.network" forwarded_port",guest:80,host:80
当您在保存后启动VM时,您将收到来自流浪者的警告:
==> default:您正尝试转发到特权端口(端口< = 1024)。最
==>默认值:操作系统将此限制为仅限特权进程(通常为
==> default:作为管理用户运行的进程)。这是一个警告
==>默认:端口转发不起作用。如果出现任何问题,请尝试
==>默认值:端口高于1024。
==>默认:转发端口......
default: 80 => 80 (adapter 1)
但它对我有用。现在,要实际访问VM,我必须使用它的私有IP而不是localhost名称:
http://192.168.10.10/
但果然我的网站就在那里,一切正常。如果您决定保留它,则可以将该IP地址添加到hosts文件中,以便为其提供一个很好的短名称。
希望这有帮助。
答案 1 :(得分:6)
我看到有一个公认的答案,但这个替代方案也可以帮助某人。 如果我理解正确,你真的不喜欢这个端口" 8000"!
您是否尝试过设置专用网络?
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
/*other config stuff here */
config.vm.network :private_network, ip: "192.168.33.22"
这样您只需使用该IP地址,或编辑主机文件即可将本地域映射到该IP。
查看Vagrant文档:Vagrant Private Networks
顺便说一句,您不应该关闭IIS本地服务器,因为它在完全不同的IP范围上运行。我在本地运行Apache,同时也访问VM服务器。如果需要,这允许您在本地使用诸如composer之类的工具(拉入laravel)。答案 2 :(得分:4)
我不确定混淆是什么 - 这是它应该工作的方式。
VM上的Web服务器侦听端口80. Vagrant / VirtualBox将该端口从80(在VM上)转发到8000(在localhost上),以便您可以http://localhost:8000
访问该站点。
虚拟机域名上的端口80将无法使用 - 该域名可能会解析为localhost
。
请尝试以下操作:dig local.kujif.com
(或nslookup
甚至ping
- 我不知道Windows上可用的工具),以找出该名称的IP地址解决。您可能会发现它是127.0.0.1
(localhost)。
您可以尝试使用宅基地文件中设置的IP地址:http://192.168.10.10/
- 此可能有效,但这取决于VM中如何配置网络。
理想情况下,您需要将网络设置为"桥接"在VM中 - 这将使VM(与您的网络一样)看起来像网络上的任何其他设备。 VM中的其他网络选项(对不起,我不熟悉VirtualBox中的选项)会将VM设置为自己的网络无法在VM外部访问 - 这就是端口转发用于公开网络服务的原因在VM上。