Nginx mitiniet vairākus VHosts ar dažādiem lietotājiem

Normālākā lieta pasaulē, kad jums ir serveris, ir domāt par drošību un lielāku drošību, jūs nekad nevarat būt pietiekami paranoisks

Nedaudz izplatīta prakse un NEKAS nav ieteicams izmantot vienu un to pašu lietotāju visām datu bāzēm, vēl ļaunāk, ja tiek izmantota sakne, kas, lai cik neticami varētu šķist, ir arī tādi, kas (klaiņošanas vai nezināšanas dēļ) dari to, es jau runāju par to, kāpēc tev NEVARĒT rīkoties šādi cits amatsIr pienācis laiks izskaidrot, kā un kāpēc ir labāk nošķirt tīmekļa servera apstrādi dažādiem lietotājiem, šoreiz tas izmantos Nginx.

DedicatedServer_SubImage

Kas ir lietotāji un tīmekļa serveris?

Lai to īsi un vienkārši izskaidrotu, tīmekļa serverim (apache, nginx, neatkarīgi no tā) sistēmā jāatver procesi, procesi, kas būs tie, kas paņems failus no cietā diska (attēli utt.) pieejams klienta pārlūkprogrammai. Tīmekļa serveris nevar vienkārši paņemt failus un manipulēt ar to, ka viņi nav neviens, tas ir, tam ir nepieciešams lietotājs, kurš būs tas, kurš to visu darīs beigās, un šis lietotājs ir tas, par kuru es runāju, vai tas ir saprotams?

Kas ir atdalīšana vairākos lietotājiem?

Pieņemsim, ka mūsu serverī ir 2 vietnes, mūsu pašu, kas ir personisks projekts, un vēl viena (iedomāsimies, ka tā ir mūsu draudzene vai brālis). Pat ja mēs izmantojam atsevišķas datubāzes un dažādus lietotājus, lai tām piekļūtu, galu galā ar abu vietņu failiem manipulē viens un tas pats lietotājs, PHP apstrādi visām vietnēm pārvalda viens un tas pats lietotājs (parasti tie ir www dati). Šī nav ieteicama prakse, labāk, lai viss būtu labi nošķirts, kā teikts senā parunā, labāk ir būt drošam nekā žēl.

Labi, es saprotu, kā man to darīt ar Nginx

2000px-Nginx_logo.svg

Vispirms jāatzīmē, ka Nginx nav sava moduļa, kas apstrādā PHP apstrādi, kā to dara Apache, Nginx mums jāizmanto PHP-CGI vai PHP-FPM, kas darbojas tikpat labi (vai labāk) nekā Apache. Tātad, lai nošķirtu PHP apstrādi dažādiem lietotājiem, mums būs jāmaina līnijas PHP konfigurācijas failos (CGI vai FPM), nevis pašā Nginx.

Pieņemsim, ka jūs izmantojat PHP-FPM, mēs izveidosim konfigurācijas failu baseins Konkrētai vietnei, tas ir, baseins ir veids, kā atdalīt PHP apstrādi no PHP-FPM, bet mēs ejam pa daļām.

1. Vispirms mums jāzina, kuru sistēmas lietotāju mēs izmantosim, es pieņemu, ka mums joprojām nav neviena izveidota un labi, izveidosim to:

Visas šīs komandas JĀVADA izpildīt ar administratora privilēģijām, izmantojot tiešo sakni vai izmantojot sudo

adduser blog

Mēs sāksim parasto lietotāja izveides procesu, ievadīsim paroli utt.

Es emuāru lietotājam, lai sekotu piemēram, ka pirmā vietne, kuru mēs mitināsim, būs emuārs, labi, ka ... lai katru lietotāju zinātu, kura vietne ir saistīta

1. Vispirms ejam uz /etc/php5/fpm/pool.d/:

cd /etc/php5/fpm/pool.d/

2. Tagad mēs izveidosim failu ar nosaukumu blog.conf:

touch blog.conf

3. Tagad mēs ievietosim baseina konfigurāciju, kuru izmantosim VHost emuārā:

Rediģējiet failu blog.conf ar nano ..., piemēram: sudo nano blog.conf
[blog] lietotājs = blog
grupa = blog
klausīties = / var / palaist / php5-fpm-blog. zeķu klausīties. īpašnieks = blog
klausīties.grupa = blog
pm = ondemand pm.max_children = 96 chdir = /

Piezīme: Tas, ko es atzīmēju sarkanā krāsā, ir tas, kas viņiem jāpārveido atkarībā no lietotāja, kuru viņi iepriekš ir izveidojuši. Piemēram, ja viņi izveido citu VHost ar citu lietotāju (forums, piemēram) tad bloga vietā vienkārši ievietojiet forumu katrā no rindām, vai nesaprotat?

4. Pēc jaunā baseina konfigurācijas (tikko izveidoto un rediģēto failu blog.conf), ir pienākusi kārta pateikt Nginx VHost šai vietnei izmantot citu zeķi šai VHost. Tiks izmantota zeķe, kuru mēs iepriekš deklarējām (/var/run/php5-fpm-blog.sock). Rediģēsim Nginx VHost un PHP apstrādes daļā norādīsim, ka izmantosiet šīs zeķes. Piemēram:

atrašanās vieta ~ \ .php $ {if (! -f $ request_filename) {atgriež 404; }
fastcgi_pass unix: / var / run / php5-fpm-blog.zeķe;
ietver fastcgi_params; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; fastcgi_read_timeout 300; }

Kā redzat, es norādīju, ka šī VHost (Šīs rindas ir, piemēram, iekš / etc / nginx / sites-enabled / vhost-blog) dariet to ar zeķēm, kas atrodamas /var/run/php5-fpm-blog.sock ... kuru mēs izveidojām iepriekš, rediģējot /etc/php5/fpm/pool.d/blog.conf ... ir tas saprata ne?

5. Kad tas būs izdarīts, mēs restartēsim abus pakalpojumus (php5-fpm un nginx) un voila, redzēsim, ka šīs vietnes (vhost) apstrādi NAV veic www-data vai root vai kāds līdzīgs, bet gan lietotājs, kuru mēs iepriekš definēts.

Šeit es parādīšu a iznākumu ps aux | grep fpm vienā no mana mezgla serveriem:

ps aux | grep fpm ebook 586 0.0 0.0 349360 1204? S Mar30 0:00 php-fpm: pool ebook ebook 589 0.0 0.0 349360 1204? S 30. marts 0:00 php-fpm: pool ebook www 608 0.0 0.2 350084 5008? S Mar30 0:00 php-fpm: baseins www www 609 0.0 0.2 350600 5048 30? S Mar0 00:3 php-fpm: pool www tv611 0.0 0.0 349360 1204 30? S 0. marts 00:3 php-fpm: pool tv3 tv615 0.0 0.0 349360 1204 30? S 0. marts, 00:3 php-fpm: pool tv1818 magazine 1.7 1.7 437576 36396 09? S 55:0 46:2264 php-fpm: žurnāla žurnāls baseins 1.9 1.7 437332 35884 10? S 15:0 26:2338 php-fpm: baseina žurnāla skolnieks 4.3 1.0 428992 22196 10? S 18:0 53:2413 php-fpm: baseina skolēnu žurnāls 1.8 1.7 437764 36152 10? S 22:0 18:2754 php-fpm: pool gutl magazine 3.5 1.3 356724 27164 10? S 38:0 00:5624 php-fpm: baseina gutl cgr 0.0 1.0 365168 22696 28? S 0. aprīlis 16:7900 php-fpm: baseins cgr skolēns 0.3 2.5 457052 52444 25? S 20. apr. 23:11021 php-fpm: baseina skolēna skolēns 0.4 2.5 458316 52864 28? S 5. aprīlis 57:11254 php-fpm: baseina skolēna cgr 0.0 1.0 363152 21708 28? S 0. aprīlis 12:13184 php-fpm: baseins cgr cgr 0.0 1.0 362872 21360 28? S 0. apr. 08:XNUMX php-fpm: baseina kr

Kā redzat ... PHP apstrādes atdalīšana lietotājiem, izmantojot Nginx + PHP-FPM, ir patiešām vienkārša, tur jūs redzat, ka ir vairāki baseini, jo ir vairāki lietotāji.

Secinājumi

Runājot par serveriem, jūs nekad neesat pietiekami paranoisks ... drošība nav ar ko spēlēties, jo vairāk mēs vienmēr cenšamies uzlabot savu serveru un to pakalpojumu drošību, jo mazāk ticams, ka mūs nobiedēs kāds (veiksmīgs) uzlaušanas mēģinājums vai kaut kas līdzīgs 😉


Raksta saturs atbilst mūsu principiem redakcijas ētika. Lai ziņotu par kļūdu, noklikšķiniet uz šeit.

9 komentāri, atstājiet savus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   dunter teica

    Gaara, pašreizējā laikā šīm lietām jābūt pēc iespējas automatizētām, iesaku izmēģināt Ansible. Bez aģenta jums ir nepieciešams tikai pitons uz attālā resursdatora, ļoti vienkārši konfigurējams, yaml faili, Jinja veidnes.

    https://github.com/ansible/ansible-examples/tree/master/wordpress-nginx

    1.    KZKG ^ Gaara teica

      Apskatīsim, tas ne vienmēr attiecas tikai uz WordPress vietnēm, un ... haha ​​varbūt Ansible noklikšķina uz volao, bet es gribētu precīzi zināt, kā viss darbojas serverī, pat ja man ir jāpavada 1 minūte, izveidojot jaunas zeķes un jauns VHost 😀

      1.    dunter teica

        Ar Ansible jūs visu automatizējat, jūs darāt praktiski visu, ko vēlaties. Šīs metodes priekšrocība ir tā, ka jūs iekapsulējat praksi un pēc tam izpildāt pēc vēlēšanās, iedomājieties, ka jums ir ļoti ielādēta vietne un vēlaties veikt slodzes līdzsvarošanu starp lietojumprogrammu serveriem, šie ir jākonfigurē tieši tāpat, jūs nevarat izlaist soli vai darīt kaut ko citu vienā no tiem, vai varat iedomāties, ka veicat procedūru soli pa solim 4 reizes? Ar Ansible tas ir tik vienkārši, kā resursdatora pievienošana inventāra failam un Voilá !!

        http://www.ansible.com/how-ansible-works

      2.    dunter teica

        Atvainojiet par kultu Ansible, taču tā ir viena no šīm tehnoloģijām, ko jūs atklājat, un vēlaties, lai visi to izmantotu tagad, jo tā ir tik forša un praktiska, piemēram, kad atklājat NGINX un vēlaties, lai visi draugi nekavējoties pamestu Apache.

        https://speakerdeck.com/slok/ansible-all-the-things

  2.   Mstaaravins teica

    Esmu pārliecināts, ka mana ziņa to papildina ...
    http://blog.ngen.com.ar/configuracion-segura-de-un-webserver-con-nginx-php-fpm/

  3.   87 teica

    Esmu (vai mācos) būt izstrādātājs, un ar NGIX man bija daudz problēmu, konfigurējot nginx + php-fpm. Es zinu, ka archlinux distro nav labākais, lai to izveidotu kā serveri, taču katru reizi, kad es atjaunināju ngix vai php versiju, viss vienmēr avarēja, tāpēc es atteicos no mēģinājuma lol ... Šodien es palieku pie klasiskā Apache + PHP, bet es redzēšu, vai es vēlreiz apietu NGIX ... varbūt virtuālajā mašīnā

    1.    dunter teica

      Mentalitāte nedaudz mainās, nginx kalpo statiskajam saturam un kalpo kā reversais starpniekserveris php-fpm, tas ir, kurš vada īsto PHP, jums jāsāk pa daļām un jāsasniedz izvietošana soli pa solim, jāmeklē izvietošanas ceļvedis ietvars, ar kuru jūs strādājat, katram no tiem ir sava informācija ar sabiedrības nosaukumiem, statisko, resursu utt.

  4.   anonīms teica

    Dariet sabiedrībai lielu labvēlību, atsakoties no vārda “hostear”, kura neeksistē. Dievs, vai ir tik grūti pateikt "saimnieks"?

  5.   Grib teica

    Sveicināti, sekojot jūsu piemēram, es vēlētos uzzināt, vai var izveidot baseinu tikai WordPress backen, tas ir, wp-administratoram, kurš izveido jaunu ligzdu ienākošajiem savienojumiem ar aizmuguri

    atrašanās vieta / wp-admin {
    sakne /var/www/jūsu vietne.com/wp-admin;
    indekss index.php index.html index.htm;
    atrašanās vieta ~ ^ / wp-admin /(.+. php) $ {
    try_files $ uri = 404;
    sakne /var/www/jūsu vietne.com/wp-admin;
    iekļaut / etc / nginx / fastcgi_params;

    fastcgi_pass server unix:/run/php5-fpm2.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 256 4k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    fastcgi_read_timeout 1240;
    }
    location ~* ^/wp-admin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
    root /var/www/tusitio.com/wp-admin/;
    }
    }