Я хотел бы, чтобы на моем сервере было несколько экземпляров Nginx на разных портах (например, один пользователь запускает Nginx на порту 2345, а другой - на порту 2346). Пока мне удалось скомпилировать и запустить сервер на назначенных им портах. Однако у меня возникает странная проблема: если я захожу на domain1.com:2345 или domain2.com:2346, я получаю правильный (200) ответ, но если я посещаю domain1.com или domain2.com (без указания порта), я не получить никакого ответа.
Любая помощь / подсказки в выяснении того, как это настроить, будут очень признательны.
Хорошо, я нашел решение.
Что я сделал, так это запустил «главный» сервер как root на порту 80. Оттуда я добавляю серверные блоки для каждого сервера на их порты с директивой proxy_pass для сервера.
server {
listen 80;
charset utf-8;
server_name domain1.com;
location / {
proxy_pass http://domain1.com:2345;
}
server {
listen 80;
charset utf-8;
server_name domain2.com;
location / {
proxy_pass http://domain2.com:2346;
}
Возможно, есть более элегантное решение, но оно работает хорошо.
Веб-браузеры автоматически выбирают порт 80, если вы не указываете порт. Из вашего объяснения кажется, что ни один из двух экземпляров не прослушивает порт 80.
Возможно, вы захотите вместо этого обслуживать и domain1.com, и domain2.com из одного экземпляра nginx, используя виртуальные хосты.
Если у вас есть возможность иметь несколько IP-адресов для вашего сервера, вы можете запустить несколько экземпляров nginx на порту 80, если вы укажете разные IP-адреса в listen
директива.
Пример:
В первую очередь:
server {
listen a.b.c.e:80
...
}
С другой стороны
server {
listen f.g.h.i:80
...
}
Однако это станет проблемой, если у вас больше, чем пара пользователей. Также может быть трудно найти несколько публичных IP-адресов.