Назад | Перейти на главную страницу

Нужна ли мне конфигурация Apache ports.conf?

Я использую nginx для обслуживания статического контента и запросов прокси к Apache для обслуживания Django. У меня несколько доменов, и каждый домен имеет свой порт и Apache VirtualHost config. Например, domain1.com proxy_pass на 127.0.0.1:8000, domain2.com proxy_pass на 127.0.0.2:8010 и т. Д.

Я удалил NameVirtualHost и Listen из ports.conf. Есть ли причина, по которой они мне нужны? Похоже на Listen для каждого домена VirtualHost делает свое дело.

Теперь они вам не понадобятся, поскольку они определены в конфигурации VirtualHost. Сервер всегда будет использовать стандартный порт по умолчанию, если он не определен в конфигурации, поэтому вам не придется беспокоиться, если вы удалите VHosts позже.

Вам нужен один NameVirtualHost по критериям он сообщает Apache, как он будет сортировать входящие запросы. Если вам нужен виртуальный хостинг на основе имен на порту 80, вам нужно только

NameVirtualHost *:80

Любой HTTP-клиент, подключающийся к порту 80, будет отсортирован по 'Name:' HTTP-заголовок, соответствующий ServerName или ServerAlias ​​в одном из <VirtualHost *:80> узлов (или первый определенный виртуальный хост для тех же критериев, если совпадение не найдено).

В большинстве случаев вам нужны только два правила виртуального хостинга на основе имени: включено для порта 80, включено для порта 443 (последнее имеет смысл только с SNI / Server Name Indication). Обычно это делается автоматически, когда порт 443 и *: 433 именованный виртуальный хостинг активируется, если активирован mod_ssl:

NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
    NameVirtualHost *:443
    Listen 443
</IfModule>

В вашем случае, похоже, вы полагаетесь на обычный виртуальный хостинг на основе IP / портов. В этом случае каждому приложению потребуется один и тот же код:

Listen 800x
<VirtualHost *:800x>
    ServerName app1
    [...]
</VirtualHost>

И вот NameVirtualHost является не нужно поскольку у вас есть только один виртуальный хост на порт. В

ServerName
is also mostly irrelevant, it will be used by Apache to refer to the vhost in errors.