NGINX Unit 1.18.0 ΠžΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° сСрвСр Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ

сС ΠΎΠ΄Ρ€ΠΆΠ° ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° сСрвСрот Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ NGINX Π΅Π΄ΠΈΠ½ΠΈΡ†Π° 1.18, Π²ΠΎ Ρ‡ΠΈΠΈ Ρ€Π°ΠΌΠΊΠΈ сС Ρ€Π°Π·Π²ΠΈΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ Π½Π° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ програмски Ρ˜Π°Π·ΠΈΡ†ΠΈ (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js ΠΈ Java). Π•Π΄ΠΈΠ½ΠΈΡ†Π°Ρ‚Π° NGINX ΠΌΠΎΠΆΠ΅ истоврСмСно Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ повСќС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ програмски Ρ˜Π°Π·ΠΈΡ†ΠΈ, Ρ‡ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π·Π° ΡΡ‚Π°Ρ€Ρ‚ΡƒΠ²Π°ΡšΠ΅ ΠΌΠΎΠΆΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΈ Π΄Π° сС ΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ Π±Π΅Π· ΠΏΠΎΡ‚Ρ€Π΅Π±Π° ΠΎΠ΄ ΡƒΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° конфигурацискитС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Ρ€Π΅ΡΡ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΡšΠ΅. ΠšΠΎΠ΄ΠΎΡ‚ Π΅ напишан Π²ΠΎ C ΠΈ дистрибуирани ΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†ΠΈΡ€Π°Π½ ΠΏΠΎΠ΄ Apache 2.0. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Ρ‚Π΅ со карактСристикитС Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ‚Π° NGINX Π²ΠΎ најава ΠΏΡ€Π²ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅.

Π’ΠΎ Π½ΠΎΠ²Π°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°:

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ€Π΅ΠΆΠΈΠΌ изоляции Β«rootfsΒ» для ограничСния доступа прилоТСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ части Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Для смСны Π²ΠΈΠ΄ΠΈΠΌΠΎΠ³ΠΎ для прилоТСния корня Π€Π‘ примСняСтся Π²Ρ‹Π·ΠΎΠ² pivot_root(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ нСбСзопасного систСмного Π²Ρ‹Π·ΠΎΠ²Π° chroot() Π½Π΅ просто смСщаСт ΠΊΠΎΡ€Π΅Π½ΡŒ Π€Π‘, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ пространства ΠΈΠΌΡ‘Π½, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ Ρ‚ΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠΌΠΈΠΌΠΎ нСпосрСдствСнно ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° прилоТСния, Unit Ρ‚Π°ΠΊΠΆΠ΅ автоматичСски ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ Π€Π‘ всС спСцифичныС языковыС зависимости (Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ числа языков).

    {
    Β«typeΒ»: Β«python 2.7Β»,
    Β«pathΒ»: Β«/Β»,
    Β«homeΒ»: Β«/venv/Β»,
    Β«moduleΒ»: Β«wsgiΒ»,
    Β«isolationΒ»: {
    Β«rootfsΒ»: Β«/var/app/sandbox/Β»
    }
    }

  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ указания Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… схСм Π²Ρ‹Π·ΠΎΠ²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π½ΠΎΠ²ΠΎΠΉ сСкции Β«Ρ†Π΅Π»ΠΈΒ«. Указанная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ позволяСт ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ настройку ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Ρ… схСм адрСсации, ΠΊΠΎΠ³Π΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, большая Ρ‡Π°ΡΡ‚ΡŒ запросов обрабатываСтся Ρ‡Π΅Ρ€Π΅Π· index.php нСзависимо ΠΎΡ‚ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ URI, Π° интСрфСйс администратора Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ приводят ΠΊ Π²Ρ‹Π·ΠΎΠ²Ρƒ скриптов. Π Π°Π½Π΅Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ настройки ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Ρ‡Π΅Ρ€Π΅Π· опрСдСлСния Π΄Π²ΡƒΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΎΠ΄Π½ΠΈΠΌ. НапримСр, вмСсто:

    {
    Β«wp_indexΒ»: {
    Β«typeΒ»: Β«phpΒ»,
    Β«userΒ»: Β«wp_userΒ»,
    Β«groupΒ»: Β«wp_userΒ»,
    Β«rootΒ»: Β«/path/to/wordpress/Β»,
    Β«scriptΒ»: Β«index.phpΒ»
    },

    Β«wp_directΒ»: {
    Β«typeΒ»: Β«phpΒ»,
    Β«userΒ»: Β«wp_userΒ»,
    Β«groupΒ»: Β«wp_userΒ»,
    Β«rootΒ»: Β«/path/to/wordpress/Β»
    }
    }

    моТС да сС навСдС

    {
    Β«wpΒ»: {
    Β«typeΒ»: Β«phpΒ»,
    Β«userΒ»: Β«wp_userΒ»,
    Β«groupΒ»: Β«wp_userΒ»,

    Β«targetsΒ»: {
    Β«indexΒ»: {
    Β«rootΒ»: Β«/path/to/wordpress/Β»,
    Β«scriptΒ»: Β«index.phpΒ»
    },

    Β«directΒ»: {
    Β«rootΒ»: Β«/path/to/wordpress/Β»
    }
    }
    }
    }

  • Π”ΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ символов Π² Ρ„ΠΎΡ€ΠΌΠ΅ Β«%xxΒ» Π² опциях сопоставлСния Β«uriΒ» ΠΈ Β«argumentsΒ», Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΎΠΏΡ†ΠΈΠΈ Β«passΒ».

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€