nginx и apache2 на одном сервере

С официального сайта Ubuntu Budgie: Мы предлагаем два стабильных выпуска - 17.10.1 и 16.04.3 18.04 - следующий LTS и в настоящее время находится в разработке - не используйте это на производственных машинах. 17.10.1 - это текущий стабильный релиз и следует за поддержкой канадства Ubuntu - с октября 2017 года по июль 2018 года. 16.04.3 поддерживается сообществом - поддерживается до тех пор, пока поддержка заканчивается (нет текущих планов) и после этого, пока пользователи budgie-remix хотят для поддержания своей поддержки.

официальный сайт Ubuntu Budgie

1
задан 8 April 2018 в 19:28

6 ответов

Прежде всего. Apache и Nginx - это веб-серверы, а не DNS-серверы. Они ничего не решают. Этот вопрос не имеет ничего общего с DNS, но все с тем, как веб-серверы обрабатывают запросы.

Мне нужно, чтобы app1.mydomain.com разрешался apache и app2.mydomain.com для решения nginx. Оба на порту 80. Возможно ли это?

Нет, это невозможно. Два приложения не могут прослушивать один и тот же порт. Вы можете решить это двумя способами:

Попросите Apache прослушивать порт 80 и прокси-запросы для app2.mydomain.com для nginx, прослушивая другой порт и используя app1.mydomain.com прямо. Напротив. Имейте nginx-прокси для Apache.

Или - сделать оба размещены на одном и том же веб-сервере. Apache и nginx во многих случаях взаимозаменяемы на техническом уровне, поэтому с точки зрения приложений это не имеет большого значения. По-моему, они отличаются друг от друга.

Я отмечаю, что вы запускаете nginx на порт 8080, поэтому я предполагаю, что вы хотите использовать apache в качестве прокси. Затем создайте новый виртуальный хост для apache, например. /etc/apache2-sites-available/app2.mydomain.com.conf:

<VirtualHost *:80>
   DocumentRoot "/var/www"
   ErrorLog "logs/app2-error_log"
   CustomLog "logs/app2-access_log" common
   ServerName app2.mydomain.com
   ProxyRequests Off
   <Proxy *>
          Order deny,allow
          Allow from all
    </Proxy>
     Proxypass / http://localhost:8080/
</VirtualHost>

Затем запустите sudo a2enmod proxy_http; sudo a2ensite app2.mydomain.com; sudo service apache2 reload.

Это позволит mod_proxy, mod_proxy_http и сделать apache любые запросы для VirtualHost app2.mydomain.com в nginx, который в соответствии с вашей конфигурацией работает на порту 8080.

Я не тестировал эту конфигурацию, поэтому может потребоваться некоторые настройки.

Как побочный элемент: зачем вам nginx? В соответствии с настройкой nginx он просто проксирует запрос для другого веб-сервера, работающего на порте 2368. Вы можете прокси напрямую использовать apache ...

mod_proxy-документация может быть удобна в настройке.

1
ответ дан 22 May 2018 в 11:32
  • 1
    Из сообщения пользователя, похоже, он не путает веб-сервер с его DNS-сервером. Похоже, он говорит, что его DNS-серверы уже настроены и указывают на IP-адрес устройства. – L. D. James 8 April 2018 в 19:33
  • 2
    Да, и это то, что я ожидаю в своем ответе. Также похоже, что он использует nginx для прокси-сервера для другого приложения ... – vidarlo 8 April 2018 в 19:38
  • 3
    Спасибо. Это то, что я искал. Я все еще испытываю некоторые проблемы. Я установил прокси-сервер nginx для apache и работает с proxy_pass app1.mydomain.com:80 ; но он не работает с proxy_pass 127.0.0.1:80 ; - Нужно что-то сделать в apache, я думаю ... – Student Michal Wloga 10 April 2018 в 00:13

Прежде всего. Apache и Nginx - это веб-серверы, а не DNS-серверы. Они ничего не решают. Этот вопрос не имеет ничего общего с DNS, но все с тем, как веб-серверы обрабатывают запросы.

Мне нужно, чтобы app1.mydomain.com разрешался apache и app2.mydomain.com для решения nginx. Оба на порту 80. Возможно ли это?

Нет, это невозможно. Два приложения не могут прослушивать один и тот же порт. Вы можете решить это двумя способами:

Попросите Apache прослушивать порт 80 и прокси-запросы для app2.mydomain.com для nginx, прослушивая другой порт и используя app1.mydomain.com прямо. Напротив. Имейте nginx-прокси для Apache.

Или - сделать оба размещены на одном и том же веб-сервере. Apache и nginx во многих случаях взаимозаменяемы на техническом уровне, поэтому с точки зрения приложений это не имеет большого значения. По-моему, они отличаются друг от друга.

Я отмечаю, что вы запускаете nginx на порт 8080, поэтому я предполагаю, что вы хотите использовать apache в качестве прокси. Затем создайте новый виртуальный хост для apache, например. /etc/apache2-sites-available/app2.mydomain.com.conf:

<VirtualHost *:80> DocumentRoot "/var/www" ErrorLog "logs/app2-error_log" CustomLog "logs/app2-access_log" common ServerName app2.mydomain.com ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> Proxypass / http://localhost:8080/ </VirtualHost>

Затем запустите sudo a2enmod proxy_http; sudo a2ensite app2.mydomain.com; sudo service apache2 reload.

Это позволит mod_proxy, mod_proxy_http и сделать apache любые запросы для VirtualHost app2.mydomain.com в nginx, который в соответствии с вашей конфигурацией работает на порту 8080.

Я не тестировал эту конфигурацию, поэтому может потребоваться некоторая настройка.

Как побочный элемент: зачем вам nginx? В соответствии с настройкой nginx он просто проксирует запрос для другого веб-сервера, работающего на порте 2368. Вы можете прокси напрямую использовать apache ...

mod_proxy-документация может быть удобна в настройке.

1
ответ дан 17 July 2018 в 17:14

Прежде всего. Apache и Nginx - это веб-серверы, а не DNS-серверы. Они ничего не решают. Этот вопрос не имеет ничего общего с DNS, но все с тем, как веб-серверы обрабатывают запросы.

Мне нужно, чтобы app1.mydomain.com разрешался apache и app2.mydomain.com для решения nginx. Оба на порту 80. Возможно ли это?

Нет, это невозможно. Два приложения не могут прослушивать один и тот же порт. Вы можете решить это двумя способами:

Попросите Apache прослушивать порт 80 и прокси-запросы для app2.mydomain.com для nginx, прослушивая другой порт и используя app1.mydomain.com прямо. Напротив. Имейте nginx-прокси для Apache.

Или - сделать оба размещены на одном и том же веб-сервере. Apache и nginx во многих случаях взаимозаменяемы на техническом уровне, поэтому с точки зрения приложений это не имеет большого значения. По-моему, они отличаются друг от друга.

Я отмечаю, что вы запускаете nginx на порт 8080, поэтому я предполагаю, что вы хотите использовать apache в качестве прокси. Затем создайте новый виртуальный хост для apache, например. /etc/apache2-sites-available/app2.mydomain.com.conf:

<VirtualHost *:80> DocumentRoot "/var/www" ErrorLog "logs/app2-error_log" CustomLog "logs/app2-access_log" common ServerName app2.mydomain.com ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> Proxypass / http://localhost:8080/ </VirtualHost>

Затем запустите sudo a2enmod proxy_http; sudo a2ensite app2.mydomain.com; sudo service apache2 reload.

Это позволит mod_proxy, mod_proxy_http и сделать apache любые запросы для VirtualHost app2.mydomain.com в nginx, который в соответствии с вашей конфигурацией работает на порту 8080.

Я не тестировал эту конфигурацию, поэтому может потребоваться некоторая настройка.

Как побочный элемент: зачем вам nginx? В соответствии с настройкой nginx он просто проксирует запрос для другого веб-сервера, работающего на порте 2368. Вы можете прокси напрямую использовать apache ...

mod_proxy-документация может быть удобна в настройке.

1
ответ дан 23 July 2018 в 18:05

По содержанию вашего вопроса вы уже разработали его, за исключением того, что вы можете получить доступ только к одному приложению на порт #. Вы не можете запускать оба Apache2 и Nginx на одном и том же порту. Это невозможно.

Поскольку вы уже упоминали, что у вас уже работает ваш DNS и указываете на правильную машину (IP). Вы можете достигнуть своего app1.mydomain.com по умолчанию (port 80) с помощью:

http://app1.mydomain.com

Это то же самое, что и

http://app1.mydomain.com:80

Вам нужно будет указать порт для вашего Nginx, который у вас есть, по вашему конфигурационному файлу, установлен для port 8080.

Используйте это для доступа к вашему сайту1:

http://app1.mydomain.com:8080

Если вы укажете неправильный порт, по умолчанию страница будет загружаться независимо от используемого имени домена. Для Apache по умолчанию используется первый виртуальный хост, если не указано иное.

0
ответ дан 22 May 2018 в 11:32
  • 1
    Но цель - подключить app1.mydomain.com с Apache и app2.mydomain.com с помощью Nginx. Оба порта 80, поэтому пользователь не должен указывать порт. – Student Michal Wloga 8 April 2018 в 19:26
  • 2
    В этом случае вы можете обновить один сервер и перезагрузить его на альтернативный сервер. – L. D. James 8 April 2018 в 19:30

По содержанию вашего вопроса вы уже разработали его, за исключением того, что вы можете получить доступ только к одному приложению на порт #. Вы не можете запускать оба Apache2 и Nginx на одном и том же порту. Это невозможно.

Поскольку вы уже упоминали, что у вас уже работает ваш DNS и указываете на правильную машину (IP). Вы можете достигнуть своего app1.mydomain.com по умолчанию (port 80) с помощью:

http://app1.mydomain.com

Это то же самое, что и

http://app1.mydomain.com:80

Вам нужно будет указать порт для вашего Nginx, который у вас есть, по вашему конфигурационному файлу, установлен для port 8080.

Используйте это для доступа к вашему сайту1:

http://app1.mydomain.com:8080

Если вы укажете неправильный порт, по умолчанию страница будет загружаться независимо от используемого имени домена. Для Apache по умолчанию используется первый виртуальный хост, если не указано иное.

0
ответ дан 17 July 2018 в 17:14

По содержанию вашего вопроса вы уже разработали его, за исключением того, что вы можете получить доступ только к одному приложению на порт #. Вы не можете запускать оба Apache2 и Nginx на одном и том же порту. Это невозможно.

Поскольку вы уже упоминали, что у вас уже работает ваш DNS и указываете на правильную машину (IP). Вы можете достигнуть своего app1.mydomain.com по умолчанию (port 80) с помощью:

http://app1.mydomain.com

Это то же самое, что и

http://app1.mydomain.com:80

Вам нужно будет указать порт для вашего Nginx, который у вас есть, по вашему конфигурационному файлу, установлен для port 8080.

Используйте это для доступа к вашему сайту1:

http://app1.mydomain.com:8080

Если вы укажете неправильный порт, по умолчанию страница будет загружаться независимо от используемого имени домена. Для Apache по умолчанию используется первый виртуальный хост, если не указано иное.

0
ответ дан 23 July 2018 в 18:05
  • 1
    Но цель - подключить app1.mydomain.com с Apache и app2.mydomain.com с помощью Nginx. Оба порта 80, поэтому пользователь не должен указывать порт. – Student Michal Wloga 8 April 2018 в 19:26
  • 2
    В этом случае вы можете обновить один сервер и перезагрузить его на альтернативный сервер. – L. D. James 8 April 2018 в 19:30

Другие вопросы по тегам:

Похожие вопросы: