Как настроить nginx для нескольких URL, предоставляющих различные ресурсы

Вопрос или проблема

Я наткнулся на несколько примеров, демонстрирующих, как настроить несколько доменов с помощью Nginx, но мои URL-адреса обслуживают ресурсы, которые отличаются от домена веб-страницы.

Есть ли какие-либо различия в требованиях к конфигурации между этими сценариями?

Nginx имеет конфигурацию для каждого домена, и, как я предложил, скопируйте конфигурацию по умолчанию и измените параметр своего домена в них (серверные блоки). Пример:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/yourdomain.com

Теперь откройте новую конфигурацию и настройте свои параметры:

server {
 listen 80 default_server;
 listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html;
 index index.html index.htm; 
server_name localhost;
 location / { try_files $uri $uri/ =404; 
} 
}

Корень - это ваш каталог
root /var/www/yourdomain.com/html;

Каждое утверждение должно заканчиваться на ;

Имя сервера - это ваше имя домена
server_name yourdomain.com www.yourdomain.com;

Наконец, нужно настроить ссылку на блок сервера и перезапустить nginx.

sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/secounddomain.com /etc/nginx/sites-enabled/

Мы можем отключить файл блока сервера по умолчанию, просто удалив символическую ссылку. Он все еще будет доступен для справки в директории sites-available, но Nginx не будет его читать при запуске:

sudo rm /etc/nginx/sites-enabled/default 

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

sudo nano /etc/nginx/nginx.conf 

Нам просто нужно раскомментировать одну строку. Найдите и уберите комментарий с этой строки:

server_names_hash_bucket_size 64; 

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

sudo service nginx restart

Наконец, вам нужно настроить свое имя хоста в ОС

sudo nano /etc/hosts
127.0.0.1 localhost 
127.0.0.1 guest-desktop 
111.111.111.111 yourdomain.com
 111.111.111.111 secounddomain.com

Проверьте свой домен в браузере
http://yourdomain.com
Если у вас возникли проблемы, проверьте журнал nginx и отправьте журнал ошибок или журнал запуска.

Ответ или решение

Настройка Nginx для работы с несколькими URL для различных ресурсов

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

1. Основные аспекты настройки Nginx

Nginx использует концепцию серверных блоков (server blocks), которые позволяют маршрутизировать запросы на основе доменного имени и URI (Uniform Resource Identifier). Для каждого домена или поддомена необходимо создать отдельный конфигурационный файл в каталоге /etc/nginx/sites-available и активировать его с помощью жесткой ссылки в /etc/nginx/sites-enabled.

2. Установка файлов конфигурации

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

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/yourdomain.com

После этого откройте новый файл конфигурации для редактирования:

sudo nano /etc/nginx/sites-available/yourdomain.com

3. Пример конфигурации серверного блока

Ваша конфигурация может выглядеть следующим образом:

server {
    listen 80;
    listen [::]:80;

    root /var/www/yourdomain.com/html;
    index index.html index.htm;

    server_name yourdomain.com www.yourdomain.com;

    location / {
        try_files $uri $uri/ =404;
    }
}

Примечания по параметрам:

  • listen: Указывает, на каких портах и адресах сервер должен принимать запросы.
  • root: Определяет корневой каталог для статических файлов вашего сайта.
  • server_name: Определяет доменные имена, для которых применяется данный серверный блок.
  • location: Управляет обработкой запросов к различным путям URI, используя директиву try_files для обработки статических файлов.

4. Активация серверного блока

Активируйте конфигурацию, создав символическую ссылку в каталоге sites-enabled:

sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/

Если вы добавляете новый домен, например second-domain.com, выполните те же шаги:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/second-domain.com
sudo nano /etc/nginx/sites-available/second-domain.com

5. Обновление конфигурации Nginx

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

sudo rm /etc/nginx/sites-enabled/default

Измените файл конфигурации Nginx для увеличения параметра server_names_hash_bucket_size, если у вас много доменов:

sudo nano /etc/nginx/nginx.conf

Удалите комментарий перед строкой:

server_names_hash_bucket_size 64;

6. Перезапуск Nginx

Для применения всех изменений перезапустите Nginx:

sudo service nginx restart

7. Обновление файла hosts

Если вы работаете в локальной среде, добавьте записи для доменов в файл /etc/hosts:

sudo nano /etc/hosts

Добавьте следующие строки:

127.0.0.1 localhost
127.0.0.1 guest-desktop
111.111.111.111 yourdomain.com
111.111.111.111 second-domain.com

8. Тестирование конфигурации

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

http://yourdomain.com

Заключение

Следуя этим шагам, вы можете настроить Nginx для обработки нескольких URL с различными ресурсами. Если возникнут проблемы, проверьте логи Nginx на наличие ошибок, чтобы устранить их. С правильной конфигурацией Nginx обеспечит стабильную работу ваших веб-ресурсов и оптимальное распределение нагрузки.

Теперь вы готовы использовать Nginx для обслуживания ваших доменов и поддоменов, учитывая все нюансы и особенности конфигурации!

Оцените материал
Добавить комментарий

Капча загружается...