The OpenNET Project / Index page

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



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

Исходное сообщение
"Выпуск сервера приложений NGINX Unit 1.11.0"
Отправлено Ilya Indigo, 20-Окт-19 16:58 
> Есть списки рассылки, ими и нужно пользоваться: https://mailman.nginx.org/mailman/listinfo/nginx-ru

Вот не люблю я их, не удобные они, они не дают развёрнутого диалога как в багзиле или форуме. Тем более многие почтовики на которых они построены даже STARTTLS осилить не могут, и я в принципе ими не могу пользоваться.

>> try_files $uri return 404;
> Тут что-то странное написано.

Согласен, уже самому страшно, я за наделю разобрался как это работает и переписал на


location /
{
    index index.html;
    try_files $uri $uri/ =404;
}

Обязательно в самом конце, и убрал его из всех других блоков!
> Но в такой конструкции нет никакого смысла. Нужно просто оставить location пустым:
>
location / { } 
>

А вот до этого нужно было ещё догадаться...
Для меня не было очевидным что пустой location / и его отсутствие это не одно и тоже.

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

Поправьте меня если я что-то понял не так и не допонял. (Собственно, сегодня ночью я занимался именно этим.)
>[оверквотинг удален]
>

rewrite ^/([a-z][a-z])/?$ /?lang=$1? last; 
> rewrite ^/([a-z][a-z])/(payment)$ /?lang=$1&view=$2 last;
> rewrite ^/([a-z][a-z])/([\w-]+)/?$ /?lang=$1&view=$2? last;
> rewrite ^/([a-z][a-z])/([\w-]+)/([\d-]+)\.html/?$ /?lang=$1&view=$2&id=$3? last;
> rewrite ^/([a-z][a-z])/([\w-]+)/([\w-]+)/([\d-]+)\.html/?$ /?lang=$1&view=$2&tab=$3&id=$4?
> last;
> rewrite ^/([a-z][a-z])/([\w-]+)/([\w-]+)/?$ /?lang=$1&view=$2&tab=$3? last;
> rewrite ^/([a-z][a-z])/(api)/([\w\s-]+)=\{1,3\}([\w\s-]+)=\{1,3\}\.html/?$ /?lang=$1&view=$2&data=$3&iv=$4?
> last;
>

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

> Все проблемы, увы, PHP программисты создают себе сами. Хотите чтобы было просто
> и быстро - разбирайте URI в index.php. Будете вы разбирать URI
> в PHP с помощью той же регулярки или с помощью каких-то
> более эффективных функций - не так важно.
> Сейчас же вы занимаетесь лишней работой. Сначала заставили веб-сервер с помощью регулярных
> выражений парсить URI и преобразовывать его в аргументы. А затем этот
> URI с аргументами отправляете PHP-интерпретатору, чтобы тот опять парсил ваш URI,
> но уже с аргументами, вычленял эти аргументы и запихивал в хэш.
>  Зачем такое усложнение? Зачем этот лишний этап преобразования URI из
> одной формы в другую? Почему нельзя его парсить сразу в index.php?

Тут Я Вас не совсем понял. :-(

> разбирайте URI в index.php

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

> Сейчас же вы занимаетесь лишней работой.

Или Вы под лишнюю работу считаете всё ЧПУ?

> А затем этот URI с аргументами отправляете PHP-интерпретатору, чтобы тот опять парсил ваш URI.

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

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

Ускорит только (пере)запуск nginx или также дальнейшую работу rewrite-ов.

>> 4 Socket vs Port на локалхосте.
>> Правильно ли я поступаю, что использую сокеты на локалхосте вместо портов с
>> точки зрения производительности? Какие там нюансы?
> Правильно. Особых нюансов нет.

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

>> ssl_ciphers TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384;
>>
>> Это работает только для TLSv1.2 сиферов, а сиферы для TLSv1.3 выводятся те
>> и только в таком порядке, в котором они зашиты в openssl
>> ciphers.
>> Можно ли что-то с этим сделать?
> Сейчас алгоритмы для TLS 1.3 в nginx можно задать через openssl.conf, подробности
> в: https://trac.nginx.org/nginx/ticket/1529#comment:12

Благодарю. Про это необходимо написать в документации к параметру ciphers.

>> 6 Не получается включить 0-RTT (SSL Labs показывает 0-RTT enabled No)
>> https://nginx.org/ru/docs/http/ngx_http_ssl_module.html#ssl_...
>> Тут нет конкретного примера.
>> Я в http указал
>> ssl_early_data on;
> Ещё сам TLS 1.3 нужно включить с помощью ssl_protocols, а больше ничего
> и не нужно.  Но следует убедиться, что, во-первых, в системе
> стоит свежая версия OpenSSL 1.1.1+, а, во-вторых, сам nginx был именно
> с ней собран.

https://build.opensuse.org/package/view_file/server:http/ngi...


nginx -V
nginx version: nginx/1.17.3
built by gcc 9.2.1 20190903 [gcc-9-branch revision 275330] (SUSE Linux)
built with OpenSSL 1.1.1c  28 May 2019
TLS SNI support enabled

/etc/nginx/nginx.conf


error_log /var/log/nginx/error.log warn;
pid /run/nginx.pid;

events
{
    multi_accept on;
    worker_connections 1024;
}

http
{
    include mime.types;
    default_type application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
    access_log /var/log/nginx/access.log main;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    add_header Strict-Transport-Security 'max-age=63072000; includeSubDomains; preload' always;
    ssl_protocols TLSv1.3 TLSv1.2;
    ssl_ciphers TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers on;
    ssl_ecdh_curve prime256v1;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 1.1.1.1 8.8.8.8 valid=300s ipv6=off;
    ssl_early_data on;
    proxy_set_header Early-Data $ssl_early_data;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    keepalive_timeout 70;

    gzip on;

    include conf.d/*.conf;

    server
    {
        listen 443 default_server http2 ssl;
        ssl_certificate /etc/apache2/ssl.crt/gricargo.com.crt;
        ssl_certificate_key /etc/apache2/ssl.key/gricargo.com.key;
        return 301 https://gricargo.com;
    }

    include vhosts.d/*.conf;
}


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

>[оверквотинг удален]
> Параметры подбираются исходя из возможностей вашей системы, сколько в ней памяти и
> процессора доступно, и исходя из особенностей вашего приложения, сколько каждый процесс
> ест памяти, сколько ждет на I/O, а сколько работает. Пять процессов
> - это либо какой-нибудь Raspberry Pi, виртуалка, либо приложение на десяток
> активных пользователей. На нормальном сервере под средние нагрузки будет что-нибудь вроде:
>

pm.max_children = 300 
> pm.start_servers = 50
> pm.min_spare_servers = 25
> pm.max_spare_servers = 75
>

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

Благодарю Вас, за ответ, мне он, как всегда очень помог. :-)

 

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



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

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