Бродячий порт переадресации от 80 до 8000 с Laravel Homestead
Моя проблема:
Я могу получить доступ к своим сайтам только через порт 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 к URL, то это работает; он возвращает мой 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.
"Бродячий" показывает:
Мой файл 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
4 ответа
Вы должны продолжать использовать порты выше 1024, так как они являются непривилегированными портами, НО, если вы хотите, вы можете работать как порт 80 на виртуальной машине Homestead, если у вас нет ничего, что удерживало бы этот порт на хост-машине., Просто попробовал, и это сработало, с несколькими ошибками. Сначала вы измените эту строку в файле.rb с:
config.vm.network "forwarded_port", гость: 80, хост: 8000
в
config.vm.network "forwarded_port", гость: 80, хост: 80
Когда вы запустите виртуальную машину после сохранения, вы получите предупреждение от vagrant:
==> default: вы пытаетесь перенаправить на привилегированные порты (порты <= 1024). Наиболее
==> по умолчанию: операционные системы ограничивают это только привилегированным процессом (обычно
==> по умолчанию: процессы, выполняющиеся от имени администратора). Это предупреждение на случай
==> по умолчанию: переадресация портов не работает. Если возникнут какие-либо проблемы, попробуйте
==> по умолчанию: порт выше 1024.
==> по умолчанию: переадресация портов...
default: 80 => 80 (adapter 1)
Но это сработало для меня. Теперь, чтобы на самом деле добраться до ВМ, мне пришлось использовать его частный IP вместо имени локального хоста:
http://192.168.10.10/
Но, конечно же, мой сайт был там, и все работало. Если вы решите сохранить его, вы можете добавить этот IP-адрес в файл hosts, чтобы дать ему хорошее краткое имя.
Надеюсь это поможет.
Я вижу, что есть принятый ответ, но эта альтернатива также может кому-то помочь. Если я правильно понимаю, вам действительно не нравится порт "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
Кстати, вам не нужно выключать локальный сервер IIS, так как он работает на совершенно другом диапазоне IP. У меня есть Apache, работающий локально, а также доступ к серверу VM. Это позволяет вам использовать инструменты, такие как composer (чтобы использовать laravel) на вашем локальном компьютере, если это необходимо.
Я не уверен, в чем путаница - так оно и должно работать.
Веб-сервер на виртуальной машине прослушивает порт 80. Vagrant/VirtualBox перенаправляет этот порт с 80 (на виртуальной машине) на 8000 (на локальном хосте), чтобы вы могли получить доступ к сайту по адресу http://localhost:8000
,
Порт 80 на доменном имени виртуальной машины не будет доступен - это доменное имя, вероятно, разрешается в localhost
,
Попробуйте следующее: dig local.kujif.com
(или же nslookup
или даже ping
- Я не знаю, какие инструменты доступны в Windows), чтобы узнать, к какому IP-адресу относится это имя. Вы, вероятно, обнаружите, что это 127.0.0.1
(Локальный).
Вместо этого вы можете попробовать использовать IP-адрес, указанный в файле усадьбы: http://192.168.10.10/
- это может работать, но это будет зависеть от того, как настроена сеть в ВМ.
В идеале вам нужно установить для сети "мостовое соединение" в виртуальной машине - это сделает виртуальную машину (для вашей сети) похожей на любое другое устройство в сети. Другие сетевые опции в ВМ (извините, я не знаком с опциями в VirtualBox) настроят ВМ на свою собственную сеть, которая недоступна за пределами ВМ - вот почему переадресация портов используется для предоставления сетевых служб на VM.
Вы можете полностью отключить переадресацию портов по умолчанию, добавив в Homestead.yaml следующее:
default_ports: false
Или настройте, как вам нравится, добавив что-то вроде:
ports:
- send: 80
to: 80