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.
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
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:
adduser blog
Mēs sāksim parasto lietotāja izveides procesu, ievadīsim paroli utt.
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ā:
[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 😉
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
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 😀
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
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
Esmu pārliecināts, ka mana ziņa to papildina ...
http://blog.ngen.com.ar/configuracion-segura-de-un-webserver-con-nginx-php-fpm/
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ā
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.
Dariet sabiedrībai lielu labvēlību, atsakoties no vārda “hostear”, kura neeksistē. Dievs, vai ir tik grūti pateikt "saimnieks"?
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/;
}
}