Erlang Cowboy запускает два веб-сервера на одной машине с использованием разных портов - PullRequest
0 голосов
/ 07 мая 2020

Newb ie для эрлангов и ковбоев. Я использую некоторый открытый исходный код, который использует ковбой и слушает порт 8080 для предоставления службы администрирования ng-admin.

Я хочу знать, возможно ли, чтобы ковбой также слушал порт 80, чтобы предоставить пользовательский интерфейс .

Любая помощь и предложения о том, с чего начать, или любые фрагменты кода были бы очень признательны.

Большое спасибо,

MP C

Ответы [ 2 ]

1 голос
/ 12 мая 2020

Согласно моему пониманию вашего вопроса, вы хотите, чтобы 2 сервера работали на разных портах. Вы можете позвонить по номеру cowboy:start_clear/3 дважды, используя другой порт и одинаковые или разные маршруты. Это определенно выполнимо, но, как упоминалось выше, более рекомендуется использовать маршруты пространства имен для разделения приложений (например, /foo/123 и /admin/foo/123) вместо разных портов, если они используют один и тот же протокол (в данном случае http). Если вам по-прежнему нужны буксирные серверы, это будет что-то вроде:

    NormalRoutes = cowboy_router:compile(...),
    AdminRoutes = cowboy_router:compile(...),
    {ok, _} = cowboy:start_clear(http, [{port, 80}], #{
      env => #{dispatch => NormalRoutes}
    }),
    {ok, _} = cowboy:start_clear(http, [{port, 8080}], #{
      env => #{dispatch => AdminRoutes}
    }).
0 голосов
/ 08 мая 2020

Насколько я понимаю, вопрос заключается в том, можно ли запустить два сервера Cowboy на одной виртуальной машине erlang. Два сервера прослушивают два разных порта. Да, ты можешь это сделать. В основном вы компилируете свои собственные маршруты и привязываетесь к портам 8080 и 80, когда вызываете cowboy: start_clear.

Вопрос в том, имеет ли смысл такая практика. Я бы посоветовал вам использовать маршруты для разделения двух приложений вместо уровня порта / отдельного веб-сервера.

...