Web МастерскаяБлог
Сообщество Web Мастеров. Тут собрано всё, чтобы написать свой первый сайт, запустить его в Интернет и поддерживать его в течении всей его работы.
Nginx: Современный Веб-Сервер для Высоконагруженных Проектов
Сегодня большинство крупных веб-проектов сталкиваются с необходимостью обеспечивать высокую скорость обслуживания большого объема трафика. Традиционно для этих целей использовался Apache, но постепенно стал популярен альтернативный проект — Nginx. Сегодня мы поговорим о том, что такое Nginx, каковы его преимущества и особенности использования.
Nginx (читается как «энжин-экс») — это бесплатный и открытый веб-сервер, разработанный Игорем Сысоевым в 2002 году. Изначально создавался как решение проблемы масштабируемости веб-сервисов, связанных с большими объемами одновременных соединений. Nginx отличается высоким уровнем производительности, эффективностью использования ресурсов и способностью выдерживать высокие нагрузки.
Высокая Производительность
Nginx разработан с использованием асинхронной модели обработки запросов, что позволяет обрабатывать тысячи соединений практически мгновенно. Благодаря этому он идеально подходит для больших и нагруженных...
Что такое Nginx?
Nginx (читается как «энжин-экс») — это бесплатный и открытый веб-сервер, разработанный Игорем Сысоевым в 2002 году. Изначально создавался как решение проблемы масштабируемости веб-сервисов, связанных с большими объемами одновременных соединений. Nginx отличается высоким уровнем производительности, эффективностью использования ресурсов и способностью выдерживать высокие нагрузки.
Особенности Nginx
Высокая Производительность
Nginx разработан с использованием асинхронной модели обработки запросов, что позволяет обрабатывать тысячи соединений практически мгновенно. Благодаря этому он идеально подходит для больших и нагруженных...
- Жалоба
Nginx: Что такое $invalid_referer и как его использовать?
В Nginx переменная
Пример использования
Предположим, вы хотите запретить прямую загрузку изображений с вашего сайта для посторонних сайтов. Вы можете настроить следующий блок в конфигурации Nginx:
...
$invalid_referer доступна в сочетании с директивой valid_referers и позволяет контролировать поступившие запросы по критерию реферера (то есть источника, откуда пришел запрос). Эта возможность помогает бороться с атаками прямого доступа к ресурсам (hotlinking), несанкционированным скачиванием файлов и другими видами злоупотреблений.Как работает $invalid_referer?
- Определение допустимых рефереров: Директива
valid_referersопределяет, какие источники запросов считаются легитимными. Если запрос поступил с незаданного источника, переменная$invalid_refererпринимает значение true. - Проверка реферера: Используя оператор
if, вы можете проверить переменную$invalid_referer. Если она истинна, запрос отклоняется или перенаправляется особым образом.
Пример использования
Предположим, вы хотите запретить прямую загрузку изображений с вашего сайта для посторонних сайтов. Вы можете настроить следующий блок в конфигурации Nginx:
location ~* \.(jpg|jpeg|gif|png)$ {
valid_referersPHP: Как разделить строку в массив
В PHP строки можно разделить на элементы массива различными методами. Рассмотрим самые распространенные способы разделения строк:
Функция explode() используется для разделения строки на части по заданному разделителю:
Результат:
Регулярное выражение может использоваться для более сложных случаев разделения:
Результат:
Эта функция полезна для CSV-подобных строк, разделенных запятыми или табуляциями:
Результат:
Делит строку...
Функция explode()
Функция explode() используется для разделения строки на части по заданному разделителю:
$string = "apple,banana,cherry";
$array = explode(",", $string);
print_r($array);Результат:
Array(
[0] => apple
[1] => banana
[2] => cherry
)Функция preg_split()
Регулярное выражение может использоваться для более сложных случаев разделения:
$string = "apple-banana-cherry";
$array = preg_split("/-/", $string);
print_r($array);Результат:
Array(
[0] => apple
[1] => banana
[2] => cherry
)Функция str_getcsv()
Эта функция полезна для CSV-подобных строк, разделенных запятыми или табуляциями:
$string = "apple,banana,\"green, grape\",cherry";
$array = str_getcsv($string);
print_r($array);Результат:
Array(
[0] => apple
[1] => banana
[2] => green, grape
[3] => cherry
)Функция str_split()
Делит строку...
Content-Security-Policy "img-src 'self'"
Директива
Однако такая политика может помешать правильной работе механизма перенаправления изображений на скрипт, поскольку прямое обращение к изображению становится невозможным.
Варианты решения
Content-Security-Policy с img-src 'self', ограничивает источники, откуда браузер может загружать изображения. Она разрешает загрузку изображений только с текущего домена и запрещает использование любых сторонних ресурсов.Однако такая политика может помешать правильной работе механизма перенаправления изображений на скрипт, поскольку прямое обращение к изображению становится невозможным.
Варианты решения
- Разрешить загрузку изображений с собственного домена и динамически генерируемых страниц:
Вместо строгого ограничения 'self', можно разрешить загрузку изображений с конкретного маршрута, где расположен твой скрипт.add_header Content-Security-Policy "img-src 'self' data: blob:";
Илиadd_header Content-Security-Policy "img-src 'self' http://yourdomain.com"; - Использовать CSP уровня "unsafe-inline":
Если ты доверяешь своему контенту и источникам, можно временно ослабить политику:add_header Content-Security-Policy "img-src *";
Но это снижает безопасность, так что лучше избегать
Запрет размещения своих картинок на сторонних сайтах (Hotlinking)
Hotlinking (хотлинкинг) — это практика, при которой внешние сайты напрямую ссылаются на изображения или другие медиа-ресурсы, расположенные на другом сайте, без загрузки этих ресурсов на собственный сервер. Таким образом, владелец исходного ресурса вынужден тратить дополнительные ресурсы своего сервера (пропускную способность и вычислительные мощности) на обслуживание чужих сайтов.
Использование заголовка Referer
Самый распространённый метод заключается в проверке заголовка Referer, отправляемого браузером. Если запрос поступает с другого домена, сервер отклоняет этот запрос.
Пример конфигурации для Nginx:
...
Проблема хотлинкинга
- Увеличенная нагрузка на сервер владельца оригинального ресурса.
- Нарушение авторских прав и интеллектуальной собственности.
- Потеря контроля над контентом, включая качество и внешний вид изображений.
Способы борьбы с хотлинком
Использование заголовка Referer
Самый распространённый метод заключается в проверке заголовка Referer, отправляемого браузером. Если запрос поступает с другого домена, сервер отклоняет этот запрос.
Пример конфигурации для Nginx:
location ~* \.(jpg|jpeg|gif|png|bmp|ico|webp)$ {
valid_referers none blocked server_names ~\.google\. ~\.yandex\.;
if
Категории
- Apache 6
- CMS 3
- CSS 16
- FTP 1
- HTML 11
- JavaScript 43
- MySQL 17
- Nginx 16
- PHP 51
- phpMyAdmin 2
- SVG 3
- URL 1
- XML 3
- Безопасность 7
- Библиотека JS 16
- Графика 3
- Доменное имя 1
- Инструкция 1
- Кодировка 2
- Контент 8
- Мнение 1
- Мобильное устройство 1
- Монетизация сайта 2
- Настройка 3
- Оптимизация 2
- Ошибка 10
- Поисковая система 1
- Продвижение сайта 6
- Производительность 1
- Софт 1
- Старт 2
- Сценарий 1
- Функция 1
- Хостинг | Сервер 3
Реклама














