IT24

Блог об информационных технологиях и всём, что с ними связано

Статический сайт на Nginx: пошаговое руководство

Для размещения статического сайта с помощью веб-сервера Nginx вам потребуется выполнить следующие шаги:

1. Установка Nginx

Проверьте, что Nginx установлен на вашем сервере. Если его нет, установите его с помощью пакетного менеджера вашей операционной системы.

1. На Ubuntu 22.04 вы можете выполнить следующие команды для установки Nginx:


sudo apt update
sudo apt install nginx

2. Создание директории для сайта:

Создайте директорию, в которой будет храниться ваш статический сайт. Например, вы можете создать директорию /var/www/mysite:


sudo mkdir -p /var/www/mysite

3. Перенос файлов на сервер:

Перенесите файлы вашего статического сайта в созданную директорию. Убедитесь, что у вас есть индексный файл, например, index.html, который будет отображаться при доступе к вашему сайту.

2. Настройка конфигурации Nginx

1. Откройте конфигурационный файл Nginx для вашего сайта. Обычно он находится в директории /etc/nginx/sites-available/. Вы можете создать новый файл конфигурации для вашего сайта, например, mysite.conf.

2. Отредактируйте файл /etc/nginx/sites-available/mysite.conf, добавив следующий блок:


server {
    listen 80;
    server_name your_domain.com;  # Замените на ваше доменное имя или IP-адрес сервера
    root /var/www/mysite;  # Замените на путь к директории вашего сайта
	index index.html;
}

3. Обработка 404 ошибки

Ошибка 404 указывает на то, что сервер не может найти запрашиваемую страницу или файл. Это может быть вызвано изменением URL, удалением файла или неправильной конфигурацией сервера.

1. Создайте специальную страницу, которая будет отображаться при возникновении ошибки 404. Назовите ее, например, 404.html и разместите ее в корневой директории вашего сайта.

2. Настройка блока сервера для обработки ошибки 404:


error_page 404 /404.html;
location = /404.html {
internal;
}

3. Персонализация страницы ошибки:

Чтобы сделать страницу ошибки 404 более информативной и дружественной для пользователей, вы можете добавить на ней сообщение, объясняющее причину ошибки и предложить пользователю другие полезные ссылки.

Например, в файле 404.html вы можете добавить следующий код:


    <!DOCTYPE html>
    <html>
    <head>
        <title>Ошибка 404: Страница не найдена</title>
    </head>
    <body>
        <h1>Ошибка 404: Страница не найдена</h1>
        <p>Извините, запрашиваемая страница не найдена на сервере. Проверьте правильность URL или <a href="/">перейдите на главную страницу</a>.</p>
    </body>
    </html>

В этом примере выводится сообщение об ошибке 404 и предлагается пользователю вернуться на главную.

4. Блокировка ботов

Активность ботов на веб-ресурсах может создавать нагрузку и замедлять работу сайта. Известные поисковые системы обычно не создают значительной нагрузки, но существуют боты, такие как Semrush, которые могут отправлять много запросов и создавать эффект DDoS-атаки.

Следующий код блокирует таких ботов и помогает предотвратить их негативное воздействие на сайт и сервер.


location / {
    if ($http_user_agent ~* SemrushBot|MJ12bot|AhrefsBot|bingbot|DotBot|GPTBot|LinkpadBot|SputnikBot|statdom.ru|MegaIndex.ru|WebDataStats|Jooblebot|Baiduspider|BackupLand|NetcraftSurveyAgent|openstat.ru|PetalBot|serpstatbot) {
        return 444;
    }
}  

Список ботов можно менять или дополнять под свои потребности.

5. Подключение SSL-сертификата

SSL-сертификаты используются для аутентификации и защиты конфиденциальности данных, передаваемых между клиентом и сервером.

1. Получение SSL-сертификата:

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

2. Установка SSL-сертификата:

После получения SSL-сертификата, вам нужно установить его на ваш сервер.

3. Внутри блока server, добавьте следующие строки:


listen 443 ssl;
server_name your_domain.com;
ssl_certificate /path/to/your_certificate.crt;
ssl_certificate_key /path/to/your_private_key.key;

Замените /path/to/your_certificate.crt на путь к вашему SSL-сертификату и /path/to/your_private_key.key на путь к вашему приватному ключу.

6. Редирект на HTTPS протокол

После установки SSL-сертификата, чтобы перенаправить все запросы на ваш сайт на HTTPS, добавьте следующий блок внутри блока server:


return 301 https://$host$request_uri;

7. Итоговый файл конфигурации Nginx


server {
    listen 80;
    server_name your_domain.com;  # Замените на ваше доменное имя
    root /var/www/mysite;  # Замените на путь к директории вашего сайта
	index index.html;
	return 301 https://$host$request_uri;
    location / {
        if ($http_user_agent ~* SemrushBot|MJ12bot|AhrefsBot|bingbot|DotBot|GPTBot|LinkpadBot|SputnikBot|statdom.ru|MegaIndex.ru|WebDataStats|Jooblebot|Baiduspider|BackupLand|NetcraftSurveyAgent|openstat.ru|PetalBot|serpstatbot) {
            return 444;
        }
    } 
}
server {
    listen 443 ssl;
    server_name your_domain.com;  # Замените на ваше доменное имя
    ssl_certificate /path/to/your_certificate.crt; # Замените на путь к вашему SSL-сертификату
    ssl_certificate_key /path/to/your_private_key.key;  # Замените на путь к вашему приватному ключу
    root /var/www/mysite;  # Замените на путь к директории вашего сайта
    index index.html;
	error_page 404 /404.html;
    location = /404.html {
    internal;
    }
}

7. Активация конфигурации и перезапуск Nginx

1. Создайте символическую ссылку на ваш файл конфигурации в директории /etc/nginx/sites-enabled/. Например:


sudo ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/

2. Проверьте конфигурацию на наличие ошибок:


sudo nginx -t

Если конфигурация не содержит ошибок, перезапустите Nginx:


sudo systemctl restart nginx

Теперь ваш статический сайт должен быть доступен по указанному доменному имени или IP-адресу сервера.

Последнее обновление: 17.06.2024