The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск сервера приложений NGINX Unit 1.11.0"
Отправлено Valentin V. Bartenev, 20-Окт-19 22:48 
>> Есть списки рассылки, ими и нужно пользоваться: https://mailman.nginx.org/mailman/listinfo/nginx-ru
>
> Вот не люблю я их, не удобные они, они не дают развёрнутого
> диалога как в багзиле или форуме. Тем более многие почтовики на
> которых они построены даже STARTTLS осилить не могут, и я в
> принципе ими не могу пользоваться.

Почтовики? STARTTLS? Вы случайно с NNTP/Usenet не попутали? В списках рассылки можно хоть из веб-интерефейса Gmail с двухфакторной авторизацией общаться.


> И с Вами я не соглашусь про пустой location.
> При пустом location в лог ошибок заносятся все 404 Not a found,
> что для меня было нежданностью и удивлением, и чтобы этого не
> было то вся статика должна обрабатываться на сайте именно так, как
> я привёл ранее в location /.
> Также этот location реализует стандартное поведение Apache к которому я привык. (В
> лог ошибок не попадпют 404 и обращение к директориям подставляется index.html)

index.html и так подставляется при запросе директории.  А вот эмулировать поведение log_not_found off; с помощью try_files - это странно.


> Иными словами, там где мне нужна регулярка (~), я могу заменить на
> rewrite, а там где нет регулярки (= или /) я могу
> оставить location и производительность будет такая же?

Да.


> От клиента приходит URI /ru/company/cargo/1.html Как мне его разбивать в /index.php если
> он полезет искать директории ru company cargo в ней файл 1.html,
> которых на сервере, естественно, нет и быть не может, а про
> наличие /index.php PHP и знаить не знает, если ему сервер не
> распарсит URI на GET-параметы и не вызовет /index.php с GET-параметрами? Как?

Обычно вся конфигурация сводится к следующим двум location-ам:


location / {
    try_files $uri @php;
}

location @php {
    fastcgi_pass unix:/run/php-fpm.sock;
    fastcgi_param SCRIPT_FILENAME path/to/app.php;
    include fastcgi_params;
}

Всё предельно просто: если файл есть на диске - мы его отдаем, а всё остальное отправляем в приложение. Приложение уже возьмет $_SERVER['REQUEST_URI'] и распарсит как угодно.
Программисты на других ЯП всю дорогу так и делали и только PHP-шники извращаются.

А ещё правильнее - это всю статику положить в отдельную директорию. Посмотрите, к примеру, насколько просто выглядит конфигурация nginx для типичного сайта на Django:
https://uwsgi.readthedocs.io/en/latest/tutorials/Django_and_...


>> А затем этот URI с аргументами отправляете PHP-интерпретатору, чтобы тот опять парсил ваш URI.
> PHP URI не парсит. Он, разве что разбивает QUERY_STRING на GET-параметры, что
> очень лёгкая и быстрая задача, $_GET = explode('&',$_SERVER['QUERY_STRING']); причём
> деелает он это сам и всегда.

Вот вы сначала полностью перезаписываете URI, формируя новый QUERY_STRING из уже существующего URI, а затем этот QUERY_STRING будет парсится в недрах интерпретатора для заполнения хэш-массива $_GET. Хотя можно было бы просто взять $_SERVER['REQUEST_URI'] и выполнить над ним ту же самую регулярку, но сделать это в PHP-скрипте и получить сразу все ваши переменные. Но для этого не надо перезаписывать URI, а просто позвать нужный SCRIPT_FILENAME, ничего больше не меняя.

REQUEST_URI не обязан как-либо пересекаться с SCRIPT_FILENAME. Это в Apache с mod_php и .htaccess иначе сложно, там выполняемый файл эквивалентен запрашиваемому URI. С FastCGI не так и нет смысла тащить костыли от mod_php на FastCGI конфигурацию.


> Я его ничем лишним не нагружаю, он даже не понимает что я
> использую ЧПУ. В этом весь и смысл.

ЧПУ - это изобретение исключительно php-шников для решения собственноручно созданной проблемы. Сначала php-шники придумали, что файлы с кодом приложения надо класть в document root веб-сервера и запрашивать их как .html странички, а затем, обнаружив, что URI с .php на конце выглядят некрасиво - теперь героически придумывают способы преодоления.

Хотя просто не нужно мешать статику с данными в одной директории. Да и то, даже для такой смеси есть выход, см. выше.


>>> 3 Стоит ли мне включить опцию в nginx pcre_jit on;?
>>> Сделает ли она обработку моих Location-ов более производительной?
>> Возможно чуть ускорит.
> Ускорит только (пере)запуск nginx или также дальнейшую работу rewrite-ов.

Только работу. А перезапуск наоборот затормозит и памяти съест чуть больше. Ведь регулярки с включенной опцией pcre_jit будут компилироваться перед использованием. Т.е. есть плюсы и минусы. Поэтому опция по умолчанию и выключена.

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


> https://www.ssllabs.com/ssltest/analyze.html?d=gricargo.com
> 0-RTT enabled  No :-(

Я что-то не нашел  в сети сервера, на котором бы данный сайт показал Yes. Даже на специально созданных для демонстрации 0-RTT тестовых серверах (типа 0rtt.tls13.com) оно показывает No.

При этом в выводе:

% openssl s_client -connect gricargo.com:44

Можно наблюдать Max Early Data: 16384


> Хотелось бы если не формул, то инструкций по тому как узнать что
> процессов не хватает или их в избытке. Понимаю что эта тема
> не Ваша, буду разбираться с этим дальше.

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

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру