Pritni VHost të shumta me përdorues të ndryshëm në Nginx

Gjëja më normale në botë kur ke një server është të mendosh për sigurinë dhe më shumë siguri, nuk mund të jesh kurrë paranojak sa duhet

Një praktikë disi e zakonshme dhe ASGJ rekomanduar, është të përdorësh të njëjtin përdorues për të gjitha bazat e të dhënave, më keq nëse përdoret rrënja, e cila sa më e pabesueshme që mund të duket, ka nga ata që (për shkak të paqartësisë ose injorancës) bëjeni këtë, unë kam folur tashmë përse NUK duhet të veproni kështu një tjetër postimTani është koha për të shpjeguar se si dhe pse është më mirë të ndash përpunimin e serverit web në përdorues të ndryshëm, këtë herë do të jetë duke përdorur nginx.

DedicatedServer_SubImage

Çfarë është ajo e përdoruesve dhe serverit të internetit?

Për ta shpjeguar atë në një mënyrë të shkurtër dhe të thjeshtë, serveri i internetit (apache, nginx, çfarëdo) duhet të hapë procese në sistem, procese që do të jenë ata që marrin skedarët nga HDD (imazhe, etj.) Dhe t'i vënë ato në dispozicion të shfletuesit të klientit . Web serveri nuk mund të marrë thjesht skedarët dhe t'i manipulojë ndërsa nuk është askush, d.m.th., i duhet një përdorues i cili do të jetë ai që do t'i bëjë të gjitha këto në fund, dhe ai përdorues është ai për të cilin po flas, a kuptohet kjo?

Çfarë është ajo e ndarjes në disa përdorues?

Supozoni se në serverin tonë kemi 2 faqe në internet, e jona që është një projekt personal, dhe një tjetër (le ta imagjinojmë se është e dashura apo e vëllait tonë) Edhe kur përdorim baza të veçanta të të dhënave dhe përdorues të ndryshëm për t'i hyrë në to, në fund skedarët e të dy faqeve të internetit manipulohen nga i njëjti përdorues, përpunimi PHP menaxhohet nga i njëjti përdorues për të gjitha faqet (zakonisht janë të dhëna www) Kjo është një praktikë jo e rekomanduar, është më mirë të keni gjithçka të ndarë mirë, siç thotë një shprehje e vjetër, është më mirë të jesh i sigurt sesa të vjen keq.

Ok e kuptoj, si ta bëj me Nginx

2000px-Nginx_logo.svg

Gjëja e parë që duhet të theksohet është se Nginx nuk ka modulin e vet që merret me përpunimin e PHP siç bën Apache, për Nginx ne duhet të përdorim PHP-CGI ose PHP-FPM, i cili funksionon po aq mirë (ose më mirë) se Apache. Pra, në mënyrë që të ndajmë përpunimin PHP midis përdoruesve të ndryshëm, do të duhet të ndryshojmë linjat në skedarët e konfigurimit të PHP (CGI ose FPM), jo vetë Nginx.

Supozoni se përdorni PHP-FPM, ne do të krijojmë një skedar konfigurimi të pishinë Për një sit specifik, domethënë, një pishinë është mënyra për të ndarë përpunimin PHP nga PHP-FPM, por ne shkojmë pjesë-pjesë.

1. Së pari ne duhet të dimë cilin përdorues të sistemit do të përdorim, unë do të supozoj se ende nuk kemi ndonjë të krijuar dhe mirë, le ta krijojmë atë:

Të gjitha komandat e mëposhtme DUHET të ekzekutohen me privilegje administrative, ose me rrënjë të drejtpërdrejtë ose duke përdorur sudo

adduser blog

Ne do të fillojmë procesin normal të krijimit të një përdoruesi, futni fjalëkalimin, etj.

Unë blog përdoruesit vetëm për të ndjekur shembullin, se faqja e parë që ne do të presë do të jetë një blog, edhe se ... të njohin çdo përdorues me të cilën faqe është e lidhur

1. Së pari le të shkojmë në /etc/php5/fpm/pool.d/:

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

2. Tani, ne do të krijojmë një skedar të quajtur blog.conf:

touch blog.conf

3. Tani do të vendosim konfigurimin e pishinës që do të përdorim për blogun VHost:

Redaktoni skedarin blog.conf me nano ... për shembull: sudo nano blog.konf
[blog] përdorues = blog
grupi = blog
dëgjo = / var / ekzekutoj / php5-fpm-blog.dëgjoj çorape.pronari = blog
dëgjo.grup = blog
pm = kërkesë pasdite.max_children = 96 chdir = /

Shenim: Ajo që i shënoj me të kuqe është ajo që ata duhet të modifikojnë në varësi të përdoruesit që kanë krijuar më parë. Për shembull, nëse krijojnë një VHost tjetër me një përdorues tjetër (forumi për shembull) atëherë në vend të blogut thjesht vendosni forumin në secilën nga linjat, nuk kuptohet?

4. Pasi konfigurimi i pishinës së re (skedarin blog.conf që sapo krijuam dhe redaktuam), është radha t'i thuash Nginx VHost të përdorë një çorape të ndryshme për atë VHost, për këtë sit. Çorapi që do të përdoret do të jetë ai që kemi deklaruar më parë (/var/run/php5-fpm-blog.sock). Le të redaktojmë Nginx VHost dhe në pjesën e përpunimit PHP, tregojmë të përdorim ato çorape. Për shembull:

vendndodhja ~ \ .php $ {nëse (! -f $ request_filename) {Return 404; }
fastcgi_pass unix: / var / run / php5-fpm-blog.çorapë;
përfshijnë fastcgi_params; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; fastcgi_read_timeout 300; }

Siç mund ta shihni, unë tregoj se përpunimi PHP i atij VHost (ato rreshta janë për shembull brenda / etj / nginx / site-enabled / vhost-blog) bëjeni me çorapet e gjetura në /var/run/php5-fpm-blog.sock ... e cila është ajo që kemi krijuar më parë kur redaktoni /etc/php5/fpm/pool.d/blog.conf ... është nuk kuptohet?

5. Pasi të jetë bërë kjo, ne rindizim të dy shërbimet (php5-fpm dhe nginx) dhe voila, do të shohim që përpunimi i asaj faqe (vhost) NUK bëhet nga të dhëna www ose root ose dikush i ngjashëm, por nga përdoruesi që kemi përcaktuar më parë .

Këtu unë ju tregoj prodhimin e një ps aux | grep fpm në një nga serverat e nyjes time:

ps aux | grep fpm ebook 586 0.0 0.0 349360 1204? S Mar30 0:00 php-fpm: ebook ebook pishinë 589 0.0 0.0 349360 1204? S Mar30 0:00 php-fpm: ebook pishinë www 608 0.0 0.2 350084 5008? S Mar30 0:00 php-fpm: pishinë www www 609 0.0 0.2 350600 5048 30? S Mar0 00:3 php-fpm: pishinë www tv611 0.0 0.0 349360 1204 30? S Mar0 00:3 php-fpm: pishinë tv3 tv615 0.0 0.0 349360 1204 30? S Mar0 00:3 php-fpm: revista pishinë tv1818 1.7 1.7 437576 36396 09? S 55:0 46:2264 php-fpm: revista e revistës së pishinës 1.9 1.7 437332 35884 10? S 15:0 26:2338 php-fpm: nxënësi i revistës së pishinës 4.3 1.0 428992 22196 10? S 18:0 53:2413 php-fpm: revista e nxënësit të pishinës 1.8 1.7 437764 36152 10? S 22:0 18:2754 php-fpm: revista gutl pishinë 3.5 1.3 356724 27164 10? S 38:0 00:5624 php-fpm: pishinë gutl cgr 0.0 1.0 365168 22696 28? S Prill 0 16:7900 php-fpm: nxënës pishinë cgr 0.3 2.5 457052 52444 25? S Prill 20 23:11021 php-fpm: nxënësi i pishinës 0.4 2.5 458316 52864 28? S Prill 5 57:11254 php-fpm: nxënësi i pishinës cgr 0.0 1.0 363152 21708 28? S Prill 0 12:13184 php-fpm: pishinë cgr cgr 0.0 1.0 362872 21360 28? S Prill 0 08:XNUMX php-fpm: pishinë cgr

Siç mund ta shihni ... ndarja e përpunimit PHP nga përdoruesit duke përdorur Nginx + PHP-FPM është me të vërtetë e lehtë, atje ju shihni se ka disa grupe, pasi ka disa përdorues.

Konkluzione

Kur bëhet fjalë për serverat, ju kurrë nuk jeni paranojakisht të mjaftueshëm ... siguria nuk është diçka për të luajtur, sa më shumë që përpiqemi gjithmonë të përmirësojmë sigurinë e serverave tanë dhe shërbimeve të tyre, aq më pak gjasa do të jemi të frikësuar nga një përpjekje (e suksesshme) hack ose çdo gjë e ngjashme


9 komente, lini tuajën

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   dhunues dijo

    Gaara, në kohën e tanishme këto gjëra duhet të automatizohen sa më shumë që të jetë e mundur, unë ju rekomandoj që të provoni Ansible. Pa agjent, ju duhet vetëm python në hostin e largët, shumë i thjeshtë për tu konfiguruar, skedarë yaml, modele Jinja.

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

    1.    KZKG ^ Gaara dijo

      Le të shohim, kjo nuk është gjithmonë vetëm për faqet WordPress, dhe ... haha ​​mbase klikimet e përgjegjshme nuk janë, por unë preferoj të di saktësisht se si funksionon gjithçka në server, edhe nëse duhet të kaloj 1 minutë duke krijuar një çorape të reja dhe një VHost i ri

      1.    dhunues dijo

        Me Ansible ju automatizoni gjithçka, bëni praktikisht gjithçka që dëshironi, avantazhi i kësaj metode është që ju të kapsuloni praktikën dhe më pas të ekzekutoni sipas dëshirës, ​​imagjinoni se keni një faqe shumë të ngarkuar dhe dëshironi të bëni balancimin e ngarkesës midis serverave të aplikacionit, i konfiguruar saktësisht i njëjtë nuk mund të kapërceni një hap ose të bëni diçka ndryshe në njërën prej tyre, a mund ta imagjinoni ta bëni procedurën hap pas hapi 4 herë? Me Ansible është aq e thjeshtë sa shtimi i emrit të hostit në skedarin e inventarit dhe Voilá !!

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

      2.    dhunues dijo

        Na vjen keq për kultin Ansible, por është një nga këto teknologji që ju zbuloni dhe doni që të gjithë ta përdorin atë tani sepse është shumë interesante dhe praktike, është si kur zbuloni NGINX dhe dëshironi që të gjithë miqtë tuaj të largohen menjëherë nga Apache.

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

  2.   mstaaravin dijo

    Jam i sigurt që postimi im e plotëson këtë ...
    http://blog.ngen.com.ar/configuracion-segura-de-un-webserver-con-nginx-php-fpm/

  3.   kalbet87 dijo

    Unë jam (ose studioj të jem) një zhvillues dhe me NGIX kam pasur shumë probleme gjatë konfigurimit të nginx + php-fpm. Unë e di që archlinux distro nuk është më e mira për ta bërë atë si një server, por çdo herë që azhurnoj një version të ngix ose php gjithçka përplaset gjithmonë kështu që hoqa dorë nga përpjekja lol ... Për sot qëndroj me Apache klasik + PHP por do të shoh nëse shkoj përsëri rreth NGIX ... ndoshta në një makinë virtuale

    1.    dhunues dijo

      Mentaliteti ndryshon pak, nginx shërben për përmbajtjen statike dhe shërben si një proxy i kundërt për php-fpm që është ai që drejton PHP-në e vërtetë, duhet të filloni në pjesë dhe të shkoni duke arritur vendosjen hap pas hapi, kërkoni një udhëzues për vendosni kornizën me të cilën punoni, secili prej tyre ka detajet e tij nga emrat e publikut, statika, burimet, etj ...

  4.   anonim dijo

    Bëni favor të madh komunitetit që të braktisë fjalën "hostear", e cila nuk ekziston. Për Zotin, a është kaq e vështirë të thuash "mikpritës"?

  5.   Wil dijo

    Përshëndetje, duke ndjekur shembullin tuaj, unë do të doja të dija nëse një pishinë mund të bëhej vetëm për wordpress backen, domethënë, për wp-admin që bën një fole të re për lidhjet hyrëse në pjesën e prapme

    vendndodhja / wp-admin {
    root /var/www/yoursite.com/wp-admin;
    indeksi i indeksit.php indeksi.html indeksi.htm;
    vendndodhja ~ ^ / wp-admin /(.+. php) $ {
    try_files $ uri = 404;
    root /var/www/yoursite.com/wp-admin;
    përfshijnë / etj / 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/;
    }
    }