Могу ли я сопоставить имя хоста * и * порт с / etc / hosts? [закрыто]

189

Могу ли я сопоставить IP-адрес как 127.0.0.1доменное имя и порт?

Например, я хотел бы отобразить 127.0.0.1наapi.example.com:8000

Carson
источник
6
Вы не можете отобразить номер порта в / etc / hosts. Вместо этого вы можете определить как 127.0.0.1 api.mydomain.comи получить к нему доступ в браузере, какapi.mydomain.com:8080
Fizer Khan
Я где-то читал, что днс поддерживает это. У вас может быть запись, которая говорит, что на www.example.com http - это порт 80, а также запись A, которая говорит, что адрес 127.0.0.1, также говорит, что она не очень хорошо поддерживается. Это не сказал много после этого.
Ctrl-Alt-Delor

Ответы:

185

Нет, это невозможно. Порт не является частью имени хоста, поэтому он не имеет значения в hosts-file.

мата
источник
134

Если вам действительно нужно это сделать, используйте обратный прокси.

Например, с nginx в качестве обратного прокси

server {
  listen       api.mydomain.com:80;
  server_name  api.mydomain.com;
  location / {
    proxy_pass http://127.0.0.1:8000;
  }
}
Эрик Фортис
источник
4
Я думаю, что строка proxy_pass должна выглядеть так: proxy_pass http://127.0.0.1:8000;я получил "недопустимый префикс URL" на nginx 1.4.3.
Нобу
спасибо за этот замечательный совет! простое решение для большинства серверов.
Микроскопы
Я использую этот трюк для сопоставления портов удаленного компьютера (например, cloud.app:80, в то время как фактический порт 8080). Очень полезно для тестирования узлов слияния кластера, но для доступа к ним по одному базовому URL. Спасибо!
Габор Надь
9
У меня была в основном та же проблема, и решение с использованием этого обратного прокси-сервера действительно полезно. Хотя, я хотел немного более простое решение , поэтому я сделал этот инструмент: github.com/cristianoliveira/ergo Я надеюсь , что это поможет в так или иначе :)
Cristian Оливейра
Спасибо @CristianOliveira! Это мне очень помогло :)
brunetton