Сервер — это просто машина с программным обеспечением веб-сервера (например, 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.