Nginx почему по умолчанию отдается var www html index nginx debian html

Обновлено: 02.07.2024

nginx вначале решает, какой из серверов должен обработать запрос. Рассмотрим простую конфигурацию, где все три виртуальных сервера слушают на порту *:80:

Параметр default_server появился в версии 0.8.21. В более ранних версиях вместо него следует использовать параметр default .

Следует иметь в виду, что сервер по умолчанию является свойством слушающего порта, а не имени сервера. Подробнее это обсуждается ниже.

Как предотвратить обработку запросов без имени сервера

Если запросы без поля “Host” в заголовке не должны обрабатываться, можно определить сервер, который будет их отклонять:

Здесь в качестве имени сервера указана пустая строка, которая соответствует запросам без поля “Host” в заголовке, и возвращается специальный для nginx код 444, который закрывает соединение.

Начиная с версии 0.8.48 настройка server_name "" является стандартной и может явно не указываться. В более ранних версиях в качестве стандартного имени сервера выступало имя машины (hostname).

Определение виртуального сервера по имени и IP-адресу

Рассмотрим более сложную конфигурацию, в которой некоторые виртуальные серверы слушают на разных адресах:

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

Конфигурация простого сайта PHP

Теперь посмотрим на то, как nginx выбирает location для обработки запроса на примере обычного простого PHP-сайта:

nginx вначале ищет среди всех префиксных location’ов, заданных строками, максимально совпадающий. В вышеприведённой конфигурации указан только один префиксный location “ / ”, и поскольку он подходит под любой запрос, он и будет использован, если других совпадений не будет найдено. Затем nginx проверяет location’ы, заданные регулярными выражениями, в порядке их следования в конфигурационном файле. При первом же совпадении поиск прекращается и nginx использует совпавший location. Если запросу не соответствует ни одно из регулярных выражений, nginx использует максимально совпавший префиксный location, найденный ранее.

Следует иметь в виду, что location’ы всех типов сопоставляются только с URI-частью строки запроса без аргументов. Так делается потому, что аргументы в строке запроса могут быть заданы различными способами, например:

Кроме того, в строке запроса можно запросить что угодно:

Теперь посмотрим, как бы обрабатывались запросы в вышеприведённой конфигурации:

Я работал с Apache раньше, поэтому я знаю, что по умолчанию общедоступный веб-корень обычно /var/www/ .

Я недавно начал работать с nginx, но я не могу найти общедоступный веб-корень по умолчанию.

где я могу найти общий веб-корень по умолчанию для nginx?

если ваша конфигурация не включает в себя root /some/absolute/path; оператор, или он включает в себя тот, который использует относительный путь, как root some/relative/path; , то результирующий путь зависит от параметров компиляции.

вероятно, единственный случай, который позволит вам сделать обоснованное предположение о том, что это значит для вас будет, если вы загрузить и скомпилировал источник самостоятельно. В этом случае пути будут относительно все . Если вы не изменили его, он по умолчанию /usr/local/nginx . Вы можете найти параметры nginx был скомпилирован с помощью via nginx -V список --prefix как первый.

С the root директива по умолчанию: html , это, конечно, приведет к /usr/local/nginx/html быть ответом на ваш вопрос.

однако, если вы установили nginx каким-либо другим способом, все ставки выключены. Ваш дистрибутив может использовать совершенно разные пути по умолчанию. Учимся выяснять, какие значения по умолчанию имеет ваше распределение по выбору использует-это совсем другая задача.

Если установка на Ubuntu с помощью apt-get, попробуйте /usr/share/nginx/www .

EDIT:

в более поздних версиях путь изменился на: /usr/share/nginx/html

каталог Nginx по умолчанию в Debian - /var/www/nginx-default .

вы можете проверить файл: /etc/nginx/sites-enabled/default

и

корень-это расположение по умолчанию.

'общедоступный веб-корень по умолчанию' можно найти из вывода nginx-V:

значение префикса --это ответ на вопрос. для примера выше корня является /var / lib / nginx

на Mac OS X установка nginx с brew делает каталог по умолчанию:

Так:

означает

нет каталога html, поэтому его нужно было бы создать вручную.

как большинство пользователей здесь сказали, это под этим путем:

Это путь по умолчанию, но вы можете сделать хотя твое.

все, что вам нужно, это создать один в корневом дереве веб-сервера и дать ему некоторые разрешения "не 0777" и только для одного пользователя и виден только для этого пользователя, но конец пути виден всем, так как конец пути-это то, что ваши файлы и папки будут просматриваться публикой.

например, вы можете сделать одну как это:

всякий раз, когда вы создаете виртуальный хост в Nginx, вы можете настроить свой собственный корневой путь, просто добавьте что-то вроде этого в свой серверный блок:

веб-папка по умолчанию для nginx зависит от того, как вы ее установили, но обычно она находится в следующих местах:

выполнить команду nginx -V и искать --prefix . Используйте эту запись, чтобы найти пути по умолчанию.

Будем работать под учетной записью обычного пользователя с sudo правами. Так же вам понадобится установленный веб-сервер Nginx. При желании можно установить полностью LEMP (Linux, Nginx, MySQL и PHP). Чтобы установить Nginx достаточно выполнить следующую команду:

Шаг 1 - настройка новой корневой директории

По-умолчанию на вашем Nginx сервере активирован только один виртуальный хост. Он работает с документами по адресу: /usr/share/nginx/html . Мы изменим эту настройку, так как чаще всего приходится работать с каталогом /var/www . Nginx не использует эту директорию по-умолчанию, так как это противоречит политике Debian по использованию пакетов в каталоге /var/www .

Но так как мы простые пользователи, и с вопросами хранения пакетов редко сталкиваемся, проигнорируем эту политику и установим этот каталог в качестве корневого. Точнее говоря, каждый каталог внутри корневой директории должен соответствовать отдельному сайту. А все файлы сайта разместим в директории /var/www/site_name/html . Сначала создадим все необходимые подкаталоги. Для этого выполним следующую команду:

Флаг -р указывает оболочке, чтобы она создавала новые каталоги если их не существует в указанном пути. Теперь передадим права на этот каталог обычному пользователю. Воспользуемся переменной окружения $USER , чтобы не вводить имя своего аккаунта. После этих действий мы сможем создавать в каталоге /var/www/ файлы, а посетители сайта - нет.

Права на корневой каталог должны быть настроены корректно если вы не исправляли значение umask , но на всякий случай поправим:

Мы полностью подготовили структуру для нашего сервера, можем двигаться дальше.

Шаг 2 - Создаём шаблон страницы для каждого сайта

Давайте создадим страницу, которая будет отображаться по-умолчанию при создании нового сайта. Создайте файл index.html в каталоге первого домена:

Внутри сделаем минимальное наполнение, чтобы понимать на каком сайте мы находимся. Вот примерное содержание:

Сохраните и закройте файл. Так как второй файл будет с похожим содержанием, просто скопируем его:

Внесём в него небольшие изменения:

Сохраните и закройте этот файл. Теперь мы будем видеть правильно ли настроены наши сайты.

Шаг 3 - создание файлов виртуальных хостов для каждого домена

Теперь у нас есть содержимое для каждого сайта, настало время создать виртуальный хосты (точнее в Nginx они называются server block, но мы будет пользоваться термином виртуальный хост). По-умолчанию, Nginx использует один виртуальный хост под названием default. Используем его в качестве шаблона для нашей конфигурации. Сначала проработаем настройку для первого домена, которую потом просто скопируем и внесем минимальные изменения для второго домена.

Создание первого файла виртуального хоста

Как я уже сказал, скопируем файл настройки default:

Откроем этот файл с правами администратора:

Если опустить комментарии, то файл должен выглядеть следующим образом:

Для начала разберемся с директивой listen . Только одному блоку server мы можем установить значение default_server . Блок с таким значением будет обслуживать запросы, если не было найдено подходящего блока (блок - это всё что находится в server). Мы отключим эту директиву в виртуальном хосте default , чтобы использовать default_server на одном из наших доменов. Я оставлю эту функцию активированной для первого домена, но при желании вы можете её перенести на второй.

Следующее что мы сделаем - настроим корневой каталог при помощи директивы root . Она должна указывать на каталог, где лежат все документы вашего сайта:

Заметка: каждая инструкция Nginx должна заканчиваться символом “;”.

Далее настроим server_name , эта директива должна соответствовать первому доменному имени. Добавим также псевдоним:

Окончательная настройка должна выглядеть следующим образом:

На этом базовая настройка окончена. Сохраните и закройте файл.

Создание второго виртуального хоста

Для этого просто скопируем файл настроек для первого сайта:

Откройте этот файл с правами администратора

В этом файле также начнем с директивы listen . Если опцию default_server вы оставили в первом файле, то здесь её следует удалить. Также необходимо убрать опцию ipv6only=on, так как её указывают только для одной комбинации адрес/порт:

Установите корневой каталог для второго сайта:

Теперь укажем server_name для второго домена:

Окончательная настройка должна выглядеть следующим образом:

Сохраните и закройте файл.

Шаг 4 - активация виртуальных хостов и перезапуск Nginx

Мы настроили наши виртуальные хосты, теперь настало время активировать их. Для этого надо создать символические ссылки на эти файлы и положить их в каталог sites-enabled , которые Nginx считывает при запуске. Создать ссылки можно следующей командой:

Теперь Nginx обработает эти файлы. Но виртуальный хост default , также активирован, поэтому мы получим конфликт параметра default_server . Отключить эту настройку можно просто удалив ссылку на файл. Сам файл останется в каталоге sites-available , так что при необходимости мы всегда сможем вернуть его на место.

Осталось ещё одна настройка, которую требуется выполнить в конфигурационном файле Nginx. Откройте его:

Надо снять комментарий с одной из строк:

Поэтому лучше увеличить это значение до 64. Теперь можно перезапустить веб сервер, чтобы изменения вступили в силу:

Ваш сервер теперь должен обрабатывать запросы к обоим доменам.

Шаг 5 - Настройка локального файла hosts (дополнительно)

Если вы использовали свои доменные имена, то необходимо настроить ваш локальный сервер, чтобы тот распознавал их и вы смогли бы проверить свои виртуальные хосты (будем прописывать свои доменные имена в локальный файл hosts). Конечно, интернет пользователи не смогут таким образом просматривать ваш сайт, но для проверки хостов этого будет достаточно. Таким образом мы перехватываем запрос, который должен быть отправлен DNS серверу. По идее мы указываем по какому ip адресу наш компьютер должен перейти при обращении к определенному доменному имени.

Обратите внимание, что эти изменения следует производить только на локальной машине, а не на VPS сервере. Вам понадобятся root права, также необходимо иметь право изменять системные файлы.

Если вы используете Mac или Linux систему, то исправления можно внести следующим образом:

Если же вы пользуетесь Windows, то инструкции по этой ОС вы найдете на официальном сайте производителя (или в google). Вам необходимо знать открытый IP адрес вашего сервера и доменные имена, которые вы хотите привязать к нему. Допустим мой адрес 111.111.111.111 , тогда мне надо добавить следующие строки в файл hosts :

Таким образом мы перехватим все запросы к этим доменным именам и перенаправим их на наш сервер. Сохраните и закройте файл когда закончите.

Шаг 6 - Проверка

На данном этапе вы должны получить полностью рабочую настройку. Осталось только её проверить. Для этого перейдем в браузере по адресу: http://example.com < :target="_blank" >. Если оба сайта отображаются корректно, то вас можно поздравить с полной настройкой сервера Nginx. На этом этапе, если вы вносили изменения в файл hosts , то их следует удалить т.к. проверка прошла успешно и они уже не нужны. Чтобы открыть доступ к сайтам для интернет пользователей, придется приобрести доменные имена.

Заключение

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

В этой статье я объясню, как настроить Nginx сервер для поддержки PHP на операционной системе Debian/Ubuntu. Мы разберемся в структуре конфигурационного файла, узнаем как работает Nginx и его модули. PHP-FPM — это менеджер процессов FastCGI (FCGI) в PHP, обычно используемый для высоконагруженных сайтов. Этот метод интеграции PHP использует Nginx. PHP-FPM 7.4 является последней стабильной версией, доступной для установки. По этой инструкции вы также можете установить PHP-FPM 7.3, PHP-FPM 7.2, PHP-FPM 7.1, PHP-FPM 7.0.

Эта инструкция была выполнена на операционных системах: Debian 10, Debian 9, Ubuntu 20.10, Ubuntu 20.04, Ubuntu 19.10.

Структура конфигурационного файла

Обычно главный конфигурационный файл nginx.conf расположен в директории /etc/nginx. В нем можно выделить блочные и простые директивы, которые относятся к определенному модулю Nginx. Блочные директивы также могут называться контекстом, если внутри фигурных скобок находятся другие директивы. Давайте рассмотрим конфигурационный файл по умолчанию (я удалил закомментированные части):

В этом файле прописаны глобальные настройки (базовые, SSL, логирование, Gzip), которые можно будет переопределить для конкретного виртуального хоста, которые подгружаются в самом конце:

Главный конфигурационный файл nginx.conf подключает все конфигурационные файлы и объединяет их в один, который запрашивается при запуске сервера. Этот файл нужно редактировать только в том случае, если вам необходимы другие глобальные настройки. Для начала, вы можете оставить его без изменений.

Виртуальные хосты

Конфигурационные файлы, которые описывают ваши домены, должны находиться в директории /etc/nginx/sites-available, а директория /etc/nginx/sites-enabled должна содержать символьные ссылки на активные виртуальные хосты. Каждый конфигурационный файл наследует директивы из главного конфигурационного файла nginx.conf и, при необходимости, они могут быть переопределены для конкретного виртуального хоста. Давайте рассмотрим конфигурацию сервера по умолчанию /etc/nginx/sites-available/default (я удалил закомментированные части):

Установка PHP-FPM

Перед любой установкой программного обеспечения рекомендуется обновить список пакетов репозитория, выполнив команду в терминале:

Установим PHP-FPM, выполнив команду в терминале:

Настройка Nginx для поддержки PHP-FPM

Перед тем как настроить Nginx для работы с обработчиком PHP, узнаем его версию, выполнив команду в терминале:

Если PHP еще не установлен, то будет отображаться ошибка:

Отредактируем файл конфигурации сервера /etc/nginx/sites-available/default, добавив поддержку PHP-FPM:

Сохраняем изменения и закрываем файл. Проверим конфигурацию на валидность, выполнив команду в терминале:

Теперь применим изменения конфигурации, выполнив команду в терминале:

Тестирование Nginx с поддержкой PHP-FPM

Давайте проверим, что Nginx корректно передает файлы с расширением .php нашему обработчику PHP. Создадим тестовый файл, который будет возвращать информацию о нашем сервере, выполнив команду в терминале:

Давайте убедимся, что Nginx сервер корректно отображает содержимое, сгенерированное PHP скриптом, открыв данную страницу в браузере:

или для локального хоста

Если вы правильно настроили Nginx для поддержки PHP-FPM, то отобразится похожая страница:

Тестирование Nginx с поддержкой PHP-FPM

После проверки в целях безопасности вам необходимо удалить этот файл, выполнив команду в терминале:

Читайте также: