Бродячий порт переадресации от 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
Другие вопросы по тегам