Рейтинг:-4

Каждому ли приложению нужен веб-сервер?

флаг bj

Сервер — это просто машина с программным обеспечением веб-сервера (например, nginx, apache и т. д.). Когда мы размещаем веб-сайт в службах хостинга, таких как GoDaddy или облачных службах, предоставляют ли они программное обеспечение веб-сервера для каждого развернутого приложения, или будет только одно программное обеспечение веб-сервера для машины (сервера), и каждое приложение использует его, или мы (клиент ) необходимо настроить программное обеспечение веб-сервера?

Может ли сервер иметь `n' количество программного обеспечения веб-сервера?

В записи DNS каждая запись домена приложения указывает на IP-адрес сервера или IP-адрес веб-сервера?

Если все домены приложений на одном сервере указывают на один и тот же IP-адрес, то как запросы направляются в конкретное приложение?

Если в вопросе что-то не так, пожалуйста, укажите, поскольку я новичок в этих темах.

djdomi avatar
флаг za
Запросы на рекомендации продуктов, услуг или учебных материалов не относятся к теме, поскольку они привлекают некачественные, самоуверенные и спам-ответы, а ответы быстро устаревают. Вместо этого опишите бизнес-проблему, над которой вы работаете, исследование, которое вы провели, и шаги, предпринятые для ее решения.
Рейтинг:3
флаг my

Сервер — это просто машина с программным обеспечением веб-сервера (например, nginx, apache и т. д.).

Не обязательно. Сервер — это компьютерная система, которая используется для обслуживать другие системы (клиенты) с содержимым, данные, которые он обрабатывает (или просто получает из других источников) и возвращает клиентам.

Это может быть веб-сервер, если он обслуживает контент по протоколу HTTP, или сервер базы данных, если он хранит данные и позволяет манипулировать данными реляционным (SQL) или нереляционным способом, или DNS-сервер, если он обслуживает информацию. об именах хостов и IP-адресах через протокол DNS и так далее.

Когда мы размещаем веб-сайт в службах хостинга, таких как GoDaddy или облачных службах, предоставляют ли они программное обеспечение веб-сервера для каждого развертываемого приложения, или будет только одно программное обеспечение веб-сервера для машины (сервера), и каждое приложение использует его, или мы (клиент ) необходимо настроить программное обеспечение веб-сервера?

Это зависит. Некоторые предоставляют виртуальные машины (или аналогичные) с предустановленными веб-серверами, такими как Apache, и вам «всего лишь» нужно правильно настроить их для вашего приложения. Другие (AWS EC2) просто предоставляют простые виртуальные машины, и вам нужно установить и настроить любой сервис или пакет (включая веб-сервер), которые вам могут понадобиться.

Может ли сервер иметь `n' количество программного обеспечения веб-сервера?

Да. На одном и том же сервере могут размещаться различные инструменты веб-сервера (например, Apache и Nginx для разных приложений), или даже разные экземпляры одной и той же технологии веб-сервера (например, с помощью контейнеров), или один инструмент веб-сервера, который обрабатывает несколько приложений (возможно, с использованием виртуальных хостов).

В записи DNS каждая запись домена приложения указывает на IP-адрес сервера или IP-адрес веб-сервера?

Он должен указывать на любой маршрутизируемый IP-адрес, доступный извне и каким-то образом «привязанный» к веб-серверу. Простая установка может быть виртуальной машиной с одним IP-адресом и веб-сервером, прослушивающим этот IP-адрес. Но веб-сервер также может внутренне прослушивать другой адрес, например 127.0.0.1, и использовать некоторые методы (например, NAT) для получения HTTP-запросов с IP-адресом виртуальной машины в качестве адреса назначения. И так далее.

Если все домены приложений на одном сервере указывают на один и тот же IP-адрес, то как запросы направляются в конкретное приложение?

Это можно сделать несколькими способами. Во-первых, у вас могут быть разные процессы, прослушивающие один и тот же IP-адрес, но разные порты. Пока порт другой, конфликта нет - http://www.example.com:80 достигнет другого веб-сервера (или экземпляра веб-сервера), чем http://www.example.com:8080. Используя разные порты и привязывая каждый порт к процессу или «экземпляру» процесса (например, виртуальному хосту), каждый запрос перенаправляется в нужное приложение.

РЕДАКТИРОВАТЬ

Постараюсь ответить на дополнительные вопросы в комментариях.

что, если несколько приложений развернуты на общем сервере вместо виртуальных машин? Поскольку всем нужен порт 443 (по умолчанию), если приложение использует HTTPS, как маршрутизируются запросы? и на что будет указывать IP-адрес DNS-записи домена?

Если несколько приложений прослушивают один и тот же порт и один и тот же IP-адрес, могут выполняться другие виды манипуляций с трафиком. Например, предположим, что один и тот же IP-адрес привязан к трем приложениям:

app1.example.com — порт 443

app2.example.com — порт 443

app3.example.com — порт 443

Как HTTP-запрос на тот же IP-адрес и порт перенаправляется в нужное приложение? Один из способов — использовать Заголовок хоста. Если браузер хочет связаться с app1.example.com, он отправит HTTP-запрос на тот же IP-адрес и порт с заголовком Host, установленным на «app1.example.com».Обратный прокси-сервер примет этот запрос, прочитает значение заголовка Host и перенаправит этот запрос процессу, связанному с «app1.example.com», даже если этот процесс прослушивает тот же IP-адрес и порт, что и другие веб-серверы.

Другой другой подход основан на использовании машины (VM, baremetal — не имеет значения) с несколькими IP-адресами. Если одна и та же машина имеет несколько IP-адресов, она может размещать разные приложения на одном и том же порту, но с разными адресами, без использования каких-либо трюков с заголовками HTTP.

флаг bj
Привет @А.Дарвин, а что, если несколько приложений развернуты на общем сервере, а не на виртуальных машинах? Поскольку всем нужен порт 443 (по умолчанию), если приложение использует HTTPS, как маршрутизируются запросы? и на что будет указывать IP-адрес DNS-записи домена?
флаг bj
И как в этом случае веб-сервер будет связан с каждым приложением?
флаг bj
Будет очень полезно, если вы также предоставите ответ для общих серверов (например, для многих приложений, развернутых на одном сервере вместо виртуальных машин).
флаг jm
@vinter Хотя на данном сервере может одновременно работать несколько веб-служб (apache, nginx и т. д.), только один конкретный экземпляр может прослушивать порт 443. Несколько приложений потребуют либо прослушивания на разных портах, либо имеют разные имена хостов/ Определены CNAMES (например, виртуальные хосты apache) или natted в случае виртуальных машин или контейнеров.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.