Досконально понимать nginx

Nginx

Что такое нгинкс?

nginx — это надежный прокси-сервис промежуточного программного обеспечения HTTP с открытым исходным кодом.

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

основной файл конфигурации

/etc/nginx/nginx.conf
Базовая структура конфигурационного файла:

nginx включить, выключить, перезапустить

запустить systemctl запустить nginx закрыть nginx -s остановить Перезапуск, nginx -s reload (обычно это происходит после изменения файла конфигурации, сначала используйте nginx -t, чтобы проверить правильность синтаксиса конфигурации, а затем используйте nginx -s reload для плавного перезапуска)

журнальный файл

/var/log/nginx

Как найти, когда что-то идет не так

Самое главное это журнал ошибок, журнал ошибок, журнал ошибок.Когда возникает ошибка, первое, о чем нужно подумать, это проверить журнал ошибок, чтобы увидеть причину ошибки.

  • 1. Сначала проверьте журнал ошибок хвост -n 10 /var/log/nginx/error.log
  • 2. Найдите причину ошибки и измените файл конфигурации. /etc/nginx/conf.d/default.conf
  • 3. Проверьте, предназначена ли измененная команда ошибки для нгинкс -т
  • 4. Плавный перезапуск nginx -s перезагрузить

server_name

приоритет

1, когда одно и то же имя_сервера совпадает в нескольких подаче Тот, который появляется первым, имеет наивысший приоритет.

location

правила сопоставления местоположений

  • 1 = указывает на точное совпадение. Он сработает только в том случае, если запрошенный URL-адрес точно равен следующей строке.
  • 2 ~ Указывает, что правило определено с использованием регулярных выражений и учитывает регистр.
  • 3 ~* Указывает, что правило определено с использованием регулярного выражения и не чувствительно к регистру.
  • 4 ^~ означает, что если символ, следующий за символом, является наиболее подходящим, это правило применяется, и последующие поиски не выполняются. соответствующий заказ
  • 1 Если он соответствует = , то есть точно соответствует URL-адресу, вернуть
  • 2 Если он соответствует ^~, он вернется и не будет пытаться найти совпадение. Здесь я столкнулся с тем, что при одновременном развертывании двух одностраничных проектов реагирования на одном сервере проект реагирования A помещается в каталог /home, а проект реагирования B помещается в каталог /codsse, потому что следующие правила написаны
^~ /codsse {
    ...
}

В результате, когда URL-адрес /codesse/, index.html проекта B может совпадать, но в то же время js в index.html в B также соответствует index.html проекта B, поэтому образуется бесконечный цикл.

  • 3 Затем сопоставьте регулярное выражение, ~ или ~*, если оно совпадает, верните
  • 4 Если в конце нет совпадений, вернуть наибольшее совпадение или 404
  • 5 = > ^~ > ~/~* приоритет

try_files

Файл try_files пытается найти

Разница между псевдонимом и корнем

root будет сопоставлять местоположение вместе для доступа Например, следующая конфигурация

location /cat {
    root /cat/imgs/;
}

При посещении xx/cat/a.png он на самом деле ищет /cat/imgs/cat/a.png Когда псевдоним /cat/imgs, тот же самый URL-адрес фактически ведет к /cat/imgs/a.png, чтобы найти

контроль доступа nginx

http_access_module

запретить запретить доступ
разрешить доступ

в качестве сервера статических ресурсов

Сжать статические ресурсы

1. сжатие: вкл.
gzip_comp_level: 2 (уровень сжатия)

Установить срок действия

Как правило, браузер сначала проверяет максимальный возраст и, если он истекает, отправляет etag и Last-Modified на сервер для проверки. 1. Установите срок действия
       expires

Прямой прокси и обратный прокси

Прокси вперед?

Форвардный прокси-сервер проксирует клиента для инициирования запроса, такого как vpn, который мы часто используем.

обратный прокси?

Это проксирование на стороне сервера.Например, если вы посещаете доменное имя, вы не знаете, где настоящие фактические ресурсы проксируются через nginx.

междоменный доступ

Установите, чтобы разрешить nginx разрешать междоменный доступ

location /sddss/ {
       proxy_redirect off; # 关闭重定向
       add_header Access-Control-Allow-Origin *;
   }

балансировки нагрузки

Так называемая балансировка нагрузки фактически перенаправляет запросы на разные серверы через nginx. Каждый сервис может настроить некоторые параметры, такие как вес, например, max_fails и т.д. Балансировка нагрузки также может выбирать различные алгоритмы, такие как циклический алгоритм, например, алгоритм ip-hash и алгоритм url-hash и т. д.

upsteam ii {
    serve 1;
    serve 2;
}
server {
    location / {
        proxy_pass ii;
        include proxy_params;
    }
}

nginx как кеш-сервер

nginx в качестве промежуточного кеша, используя proxy_cache_path

URL-адрес перенаправления nginx

Вы можете перенаправить совпадающий URL-адрес на другой URL-адрес, переписав его на основе обычного соответствия.

переписать синтаксис

переписать обычный флаг
флаг включает перерыв, последний, перенаправление, постоянный перерыв пойдет прямо, чтобы найти
И последнее эквивалентно продолжению сопоставления
перенаправить временное перенаправление
постоянное перенаправление

переписать приоритет

переписать правила на сервере > переписать правила на месте

ограничение цикла ссылки nginx

Используйте модули

secure_link_module Принцип заключается в том, что сначала nginx возвращает ссылку для скачивания, включая md5 и срок действия в соответствии с некоторой информацией, а затем при загрузке nginx проверяет md5 и время истечения срока действия. Обратная ссылка выглядит следующим образом: /download?mad5=dsdsd&expries=112233222

location ~ {
   secure_link
   secure_link_md5
}

nginx различает отечественные и зарубежные ip

Используйте модули

http_geoip_module Вы можете ограничить доступ в зависимости от того, является ли IP-адрес, к которому осуществляется доступ, внутренним IP-адресом.

location / {
    if ($geoip_country_code != CN) {
        return 403
    }
}

nginx https

конфигурация https

*1 Установите openssl http_ssl_module *2 Создать сертификат ЦС *3 Конфигурация

server {
    listen      443;
    server_name www.onedns.net;
    ssl         on;
    ssl_certificate     /etc/nginx/ssl/111net.pem;
    ssl_certificate_key /etc/nginx/ssl/2222.key;
    ssl_protocols       Tddsdss;
    ssl_ciphers         dddssdss;

Оптимизация HTTPS-сервиса

*1 Активировать длинную ссылку проверки активности *2 активировать кэш-память ssl

nginx+ Lua

Базовый синтаксис Lua

  • 1 ~= означает не равно
  • 2 Конкатенация строк..

Доступ к разному контенту в зависимости от ip

Основной принцип: когда пользователь обращается, nginx получает ip-адрес пользователя, а затем обращается к базе данных ip через lua, а затем позволяет разным ip-адресам получать доступ к различному контенту.

location / {
    default_type "text/html";
    content_by_lua_file /opt/as.lua;
}

оптимизация производительности nginx

Инструмент стресс-тестирования интерфейса ab

ab -n 2000 -c 2 http://127.0.0.1

привязка процессора

Установите рабочий процесс на количество ядер процессора

безопасность nginx

распространенные методы атаки

  • 1 Подстановка паролей
  • 2 Уязвимость при загрузке файлов
  • 3 SQL-инъекция