Архив метки: nginx

Деректива Nginx — location с примерами

Директива location служит для установки конфигурации в зависимости от URI-запроса.

Синтаксис location в общем виде следующий:

Syntax:   location [=|~|~*|^~] uri { ... }
   location @name { ... }
Context:  server, location

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

Переменные в nginx

Сегодня в статье привожу примеры переменных в web браузере Nginx




  • $args – переменная равна аргументам в строке запроса;
  • $arg_name – переменная равна аргументу name в строке запроса;
  • $binary_remote_addr – переменная равна адресу клиента в бинарном виде, длина её значения всегда 4 байта;
  • $content_length – переменная равна строке “Content-Length” в заголовке запроса;
  • $content_type – переменная равна строке “Content-Type” в заголовке запроса;
  • $cookie_name – переменная равна cookie name;
  • $document_root – переменная равна значению директивы root для текущего запроса;
  • $document_uri – то же самое, что и $uri;
  • $host – переменная равна строке “Host” в заголовке запроса или имени сервера, на который пришёл запрос, если этой строки нет;
  • $hostname – переменная равна имени хоста;
  • $http_name – переменная равна строке name в заголовке запроса;
  • $is_args – переменная равна “?”, если в строке запроса есть аргументы, и пустой строке, если их нет;
  • $limit_rate – переменная позволяет установить ограничение скорости соединения;
  • $pid – переменная равна номеру рабочего процесса;
  • $request_method – переменная равна методу запроса, обычно это “GET” или “POST”;
  • $remote_addr – переменная равна адресу клиента;
  • $remote_port – переменная равна порту клиента;
  • $remote_user – переменная равна имени пользователя, используемого в Basic аутентификации;
  • $realpath_root – переменная равна значению директивы root для текущего запроса, при этом все символические ссылки преобразованы в реальные путь;
  • $request_filename – переменная равна пути к файлу для текущего запроса, формируемому из директив root или alias и URI запроса;
  • $request_body – переменная содержит тело запроса. Значение переменной появляется в location’ах, обрабатываемых директивами proxy_pass и fastcgi_pass.
  • $request_body_file – переменная равна имени временного файла, в котором хранится тело запроса. По завершению работы файл необходимо удалить. Для того, чтобы тело запроса клиента всегда записывалось в файл, нужно указать client_body_in_file_only on. При передаче имени в проксированном запросе или в запросе к FastCGI-серверу следует запретить передачу самого тела директивами “proxy_pass_request_body off” или “fastcgi_pass_request_body off” соответственно.
  • $request_uri – переменная равна полному первоначальному URI вместе с аргументами;
  • $query_string – то же самое, что и $args;
  • $scheme – переменная равна схеме запроса — “http” или “https”;
  • $server_protocol – переменная равна протоколу запроса, обычно это “HTTP/1.0” или “HTTP/1.1”;
  • $server_addr – переменная равна адресу сервера, на который пришёл запрос. Как правило, для получения значения этой переменной делается один системный вызов. Для того, чтобы избежать системного вызова, нужно указывать адреса в директивах listen и использовать параметр bind;
  • $server_name – переменная равна имени сервера, на который пришёл запрос;
  • $server_port – переменная равна порту сервера, на который пришёл запрос;
  • $uri – переменная равна текущему URI в запросе, он может отличаться от первоначального, например, при внутренних редиректах или при использовании индексных файлов.



2022-01-08T13:12:16
Nginx

Установка Nginx в Debian

Nginx – это веб сервер с открытым исходным кодом, при помощи которого можно развернуть обратный прокси или веб-сайт. Nginx является вторым (после Apache) по популярности веб-сервером в мире, под управлением которого работают больше 20% всех сайтов и почтовых сервисов.

Главными преимуществами этого сервера являются простота установки и настройки, надёжность, нетребовательность к аппаратным ресурсам и высокая производительность. В этой статье мы рассмотрим как выполняется установка Nginx Debian 11.

 

Читать

Nginx. Reverse Proxy

Разберём, что такое Reverse Proxy. А также я покажу как настроить Nginx в качестве Reverse Proxy (обратного прокси сервера).





Читать далее…

Автоматическое тестирование конфигурации Nginx

Нашел любопытную утилиту для тестирования конфигурации nginx — https://github.com/yandex/gixy. Написана на python, ставится очень быстро через pip. Пример для centos 8:

# dnf install python3-pip

# pip3 install gixy

# gixy /etc/nginx/nginx.conf

 

И дальше смотрите рекомендации. Я протестировал на nginx, который работает в качестве proxy и получил рекомендацию, заменить

 

proxy_set_header Host $http_host;

 

на

 

proxy_set_header Host $host;

 

И тут же ссылка на описание, почему так стоит сделать. В общем, рекомендую, особенно если на потоке много работаете с nginx. Надо будет все свои шаблоны конфигураций проверить этой штукой.

Ограничение доступа в NGINX

NGINX поддерживает базовую аутентификацию на уровне сервера. Для примера закроем паролем доступ к директории test, находящейся в корне сайта. Сначала устанавливаем пакет apache2-utils.

Читать