Nginx дээр өөр өөр хэрэглэгчидтэй олон тооны VHosts байршуулах

Сервертэй болоход дэлхийн хамгийн энгийн зүйл бол аюулгүй байдал, аюулгүй байдлын талаар бодох явдал юм, та хэзээ ч хангалттай гаж донтон болж чадахгүй 😉

Зарим нэг нийтлэг практик бөгөөд ХЭРЭГГҮЙ зөвлөдөг зүйл бол бүх мэдээллийн баазад ижил хэрэглэгчийг ашиглах явдал юм, хэрвээ root ашиглаж байсан ч гэсэн үнэхээр гайхалтай санагдаж байсан ч гэсэн (тэнүүчлэл эсвэл мунхагийн улмаас) үүнийг хий, яагаад ийм зүйл хийх ёсгүй талаар би аль хэдийн ярьсан Өөр нэг бичлэгОдоо вэб серверийн боловсруулалтыг өөр хэрэглэгчдэд хэрхэн, яагаад ялгаж салгах нь илүү дээр вэ гэдгийг тайлбарлах цаг болжээ, энэ удаад үүнийг ашиглах болно Nginx.

Зориулалтын серверийн дэд зураг

Хэрэглэгчид болон вэб сервер гэж юу вэ?

Үүнийг богино бөгөөд энгийн байдлаар тайлбарлахын тулд вэб сервер (apache, nginx, юу ч байсан) систем дэх процессуудыг нээж, файлуудыг HDD (зураг гэх мэт) -ээс авч, үйлчлүүлэгчийн хөтөч дээр ашиглах боломжтой процессуудыг нээх хэрэгтэй. . Вэб сервер нь файлуудыг зүгээр л авчихаад хэн ч биш болгож чадахгүй, өөрөөр хэлбэл эцэст нь энэ бүх зүйлийг хийх хэрэглэгч хэрэгтэй болно, тэр хэрэглэгч бол миний яриад байгаа хэрэглэгч юм байна, ойлгов уу?

Хэд хэдэн хэрэглэгчид салгах гэж юу вэ?

Манай сервер дээр хувийн вэбсайт болох өөр вэбсайттай 2 вэбсайт байгаа гэж бодъё (энэ бол манай найз охин эсвэл ахынх гэж төсөөлөөд үзье). Бид тусдаа мэдээллийн бааз, өөр өөр хэрэглэгчид ашиглаж тэдгээрт нэвтрэх үед ч гэсэн эцэст нь хоёр вэбсайтын файлыг нэг хэрэглэгч удирддаг, PHP боловсруулалтыг бүх сайтын хувьд нэг хэрэглэгч удирддаг (ихэвчлэн www-дата). Энэ бол зөвлөдөггүй дадал юм, эртний хэлсэнчлэн харамсахаасаа илүү аюулгүй байх нь дээр.

За, би ойлгож байна, үүнийг Nginx-тэй яаж хийх вэ?

2000px-Nginx_logo.svg

Анхаарах зүйл бол Nginx-д PHP боловсруулалтыг Apache-тэй адил зохицуулдаг өөрийн гэсэн модуль байдаггүй тул Nginx-ийн хувьд бид PHP-CGI эсвэл PHP-FPM ашиглах хэрэгтэй бөгөөд энэ нь Apache-ээс илүү сайн ажилладаг (эсвэл илүү сайн) юм. Тиймээс, янз бүрийн хэрэглэгчдэд PHP боловсруулалтыг салгахын тулд бид Nginx биш харин PHP тохиргооны файлууд (CGI эсвэл FPM) дахь мөрүүдийг өөрчлөх хэрэгтэй болно.

Та ашигладаг гэж бодъё PHP-FPM, бид тохиргооны файлыг үүсгэх болно сан Тодорхой сайтын хувьд усан сан бол PHP боловсруулалтыг PHP-FPM-ээс салгах арга юм, гэхдээ бид хэсэг хэсгээр нь явдаг.

1. Нэгдүгээрт, бид системийн аль хэрэглэгчийг ашиглахаа мэддэг байх ёстой, бид одоо ч гэсэн бүтээсэн, сайн зүйл байхгүй гэж үзье, үүнийг бүтээцгээе:

Дараах бүх тушаалуудыг шууд root эсвэл sudo ашиглан захиргааны давуу эрхээр гүйцэтгэх ёстой

adduser blog

Бид хэрэглэгч үүсгэх ердийн процессыг эхлүүлэх, нууц үгээ оруулах гэх мэт.

Би хамгийн түрүүнд байршуулах сайт нь блог байх болно гэсэн үлгэр жишээг дагахын тулд би хэрэглэгчийг блогтоо оруулдаг.

1. Эхлээд /etc/php5/fpm/pool.d/ руу оръё:

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

2. Одоо бид blog.conf нэртэй файл үүсгэх болно.

touch blog.conf

3. Одоо бид VHost блогт ашиглах усан сангийн тохиргоог хийх болно.

Blog.conf файлыг нано ашиглан засварлах ... жишээ нь: sudo нано блог.conf
[блог] хэрэглэгч = блог
бүлэг = блог
сонсох = / var / run / php5-fpm-блог.сок сонсох. эзэн = блог
сонсох.group = блог
pm = ondemand pm.max_children = 96 chdir = /

Тайлбар: Миний тэдгээрийг улаанаар тэмдэглэсэн зүйл бол урьд нь үүсгэсэн хэрэглэгчийн онцлогоос хамаарч өөрчлөх ёстой зүйл юм. Жишээлбэл, хэрэв тэд өөр хэрэглэгчтэй өөр VHost үүсгэсэн бол (жишээ нь форум) дараа нь блогын оронд мөр болгон дээр форум тавь, ойлгохгүй байна уу?

4. Шинэ усан сангийн тохиргоог хийсний дараа (бидний сая үүсгэсэн, засварласан blog.conf файл), Nginx VHost-т энэ сайтын хувьд өөр VHost-д зориулж өөр оймс өмсөөрэй гэж хэлэх ээлж байна. Ашиглах оймс нь бидний өмнө нь зарласан байсан болно (/var/run/php5-fpm-blog.sock). Nginx VHost-ийг засаж, PHP боловсруулах хэсэгт бид тэр оймсыг ашиглахыг зааж өгсөн. Жишээлбэл:

байршил ~ \ .php $ {if (! -f $ request_filename) {return 404; }
fastcgi_pass unix: / var / run / php5-fpm-блог. оймс;
fastcgi_params оруулах; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; fastcgi_read_timeout 300; }

Таны харж байгаагаар би тэр VHost-ийн PHP боловсруулалтыг (эдгээр мөрүүд нь жишээ нь / etc / nginx / sites-enabled / vhost-blog дотор байна) үүнийг өмнө нь /etc/php5/fpm/pool.d/blog.conf ... засварлахад бидний бүтээсэн /var/run/php5-fpm-blog.sock ... -д байгаа оймсоор хий. ойлгохгүй байна уу?

5. Үүнийг хийсний дараа бид хоёр үйлчилгээ (php5-fpm ба nginx) болон voila-г дахин эхлүүлж, тэр сайтыг (vhost) боловсруулалтыг www-дата эсвэл root эсвэл үүнтэй төстэй хэн нэгэн хийхгүй, харин бидний өмнө нь тодорхойлсон хэрэглэгч хийхгүй гэдгийг харах болно. .

Энд би a-ийн гаралтыг харуулж байна ps aux | grep fpm миний зангилааны серверүүдийн нэг дээр:

ps aux | grep fpm ebook 586 0.0 0.0 349360 1204 30? S Mar0 00:589 php-fpm: pool ebook ebook 0.0 0.0 349360 1204 30? S Mar0 00:608 php-fpm: pool ebook www 0.0 0.2 350084 5008 30? S Mar0 00:609 php-fpm: pool www www 0.0 0.2 350600 5048 30 0? S Mar00 3:611 php-fpm: pool www tv0.0 0.0 349360 1204 30 0? S Mar00 3:3 php-fpm: pool tv615 tv0.0 0.0 349360 1204 30 0 00? S Mar3 1818:1.7 php-fpm: pool tv1.7 сэтгүүл 437576 36396 09 55 0? S 46:2264 1.9:1.7 php-fpm: бассейн сэтгүүл 437332 35884 10 15 0? S 26:2338 4.3:1.0 php-fpm: pool journal сурагч 428992 22196 10 18 0? S 53:2413 1.8:1.7 php-fpm: pool pupil journal 437764 36152 10 22 0? S 18:2754 3.5:1.3 php-fpm: pool gutl сэтгүүл 356724 27164 10 38 0? S 00:5624 0.0:1.0 php-fpm: pool gutl cgr 365168 22696 28 0 16? S 7900-р сарын 0.3 2.5:457052 php-fpm: pool cgr pupil 52444 25 20 23 11021? 0.4-р сарын 2.5, 458316:52864 php-fpm: pool pupil pupil 28 5 57 11254 0.0? S 1.0-р сарын 363152 21708:28 php-fpm: pool pupil cgr 0 12 13184 0.0 1.0? S April362872 21360:28 php-fpm: pool cgr cgr 0 08 XNUMX XNUMX XNUMX? XNUMX-р сарын XNUMX, XNUMX:XNUMX php-fpm: pool cgr

Таны харж байгаагаар ... Nginx + PHP-FPM ашиглан хэрэглэгчдийн PHP боловсруулалтыг салгах нь үнэхээр хялбар бөгөөд тэнд хэд хэдэн хэрэглэгчид байдаг тул хэд хэдэн усан сан байдаг.

Дүгнэлт

Серверүүдийн талаар ярихад та хэзээ ч паранойд шинжтэй байдаггүй ... аюулгүй байдал нь тоглох ямар ч зүйл биш, бид серверүүд болон тэдгээрийн үйлчилгээний аюулгүй байдлыг сайжруулахыг хичээх тусам (амжилттай) хакердах оролдлогоос бид айх магадлал бага байдаг. үүнтэй төстэй зүйл


Нийтлэлийн агуулга нь бидний зарчмуудыг баримталдаг редакцийн ёс зүй. Алдааны талаар мэдээлэхийн тулд товшино уу энд байна.

9 сэтгэгдэл, үлдээгээрэй

Сэтгэгдэлээ үлдээгээрэй

Таны и-мэйл хаяг хэвлэгдсэн байх болно. Шаардлагатай талбарууд нь тэмдэглэгдсэн байна *

*

*

  1. Мэдээллийг хариуцах: Мигель Анхель Гатан
  2. Мэдээллийн зорилго: СПАМ-ыг хянах, сэтгэгдлийн менежмент.
  3. Хууль ёсны байдал: Таны зөвшөөрөл
  4. Мэдээллийн харилцаа холбоо: Хуулийн үүргээс бусад тохиолдолд мэдээллийг гуравдагч этгээдэд дамжуулахгүй.
  5. Өгөгдөл хадгалах: Occentus Networks (ЕХ) -с зохион байгуулсан мэдээллийн сан
  6. Эрх: Та хүссэн үедээ мэдээллээ хязгаарлаж, сэргээж, устгаж болно.

  1.   манхан гэж хэлэв

    Гаара, өнөө үед эдгээр зүйлийг аль болох автоматжуулах хэрэгтэй тул Ansible програмыг туршиж үзэхийг зөвлөж байна. Агентгүйгээр танд зөвхөн алсын хост дээр python хэрэгтэй, тохируулахад маш энгийн, yaml файлууд, Jinja загварууд.

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

    1.    KZKG ^ Гаара гэж хэлэв

      Энэ нь зөвхөн WordPress сайтуудад зориулагдаагүй байгааг харцгаая, бас ... хаха Ansible volao дээр дарж магадгүй, гэхдээ би 1 минутын турш шинэ оймс бүтээхэд зориулж бүх зүйл сервер дээр хэрхэн ажилладагийг мэдэхийг илүүд үздэг. шинэ VHost 😀

      1.    манхан гэж хэлэв

        Ansible програмаар та бүх зүйлийг автоматжуулж, хүссэн зүйлээ бараг л хийдэг, энэ аргын давуу тал нь дадлыг багтааж, дараа нь дураараа гүйцэтгэх явдал юм, та маш их ачаалалтай сайт байна гэж төсөөлөөд програмын серверүүдийн хооронд ачааллын тэнцвэржүүлэлт хийхийг хүсч байна. яг ижилхэн байдлаар тохируулагдсан бол та алхамыг алгасаж эсвэл өөр зүйл хийх боломжгүй тул процедурыг алхам алхамаар 4 удаа хийж байна уу? Ansible-тэй бол тооллогын файлд хостын нэр нэмэх, Voilá-тай адил хялбар байдаг !!

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

      2.    манхан гэж хэлэв

        Ansible тахилгатай холбоотойгоор уучлаарай, гэхдээ энэ бол таны олж мэдсэн эдгээр технологийн нэг бөгөөд энэ нь маш хүйтэн бөгөөд практик тул NGINX-ийг олж нээгээд, бүх найзуудаа Апачигаас нэн даруй гарахыг хүсэж байгаатай адил хүн бүр үүнийг одоо ашиглахыг хүсч байна.

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

  2.   Мстааравин гэж хэлэв

    Миний бичлэг үүнийг нөхөж байгаа гэдэгт итгэлтэй байна ...
    http://blog.ngen.com.ar/configuracion-segura-de-un-webserver-con-nginx-php-fpm/

  3.   87 гэж хэлэв

    Би nginx + php-fpm-ийг тохируулахдаа маш их асуудалтай байсан. Archlinux distro нь үүнийг сервер болгох хамгийн сайн арга биш гэдгийг би мэднэ, гэхдээ ngix эсвэл php-ийн хувилбарыг шинэчлэх болгондоо бүх зүйл үргэлж эвдэрч байсан тул би оролдлогоо орхисон. Хэхэ ... Өнөөдөр би сонгодог Apache + PHP-тэй үлдсэн Би NGIX-ийг дахин тойрч гарах эсэхийг харах болно ... магадгүй виртуал машин дээр

    1.    манхан гэж хэлэв

      Сэтгэцийн байдал жаахан өөрчлөгдөж, nginx нь статик агуулгад үйлчилж, жинхэнэ PHP-г ажиллуулдаг php-fpm-ийн урвуу прокси болж үйлчилнэ. Та хэсэг хэсгээс эхэлж, алхам алхмаар байрлуулалтанд хүрч, байршуулах гарын авлага хайх хэрэгтэй. таны хамтран ажилладаг хүрээ, тус бүр нь олон нийтийн нэр, статик, нөөц, гэх мэт дэлгэрэнгүй мэдээллийг агуулдаг.

  4.   нэр нь үл мэдэгдэгч гэж хэлэв

    Байхгүй "hostear" гэдэг үгийг орхих нь олон нийтэд маш их таалагддаг. Бурханаар, "хост" гэж хэлэхэд тийм хэцүү гэж үү?

  5.   Вил гэж хэлэв

    Сайн байцгаана уу, таны үлгэр жишээг дагаж усан санг зөвхөн wordpress backen-д зориулж хийж болох уу, өөрөөр хэлбэл wp-admin нь арын холболттой холбогдсон холболтын шинэ залгуур хийх боломжтой эсэхийг мэдэхийг хүсч байна.

    байршил / wp-админ {
    root /var/www/yoursite.com/wp-admin;
    индекс index.php индекс.html index.htm;
    байршил ~ ^ / wp-admin /(.+. php) $ {
    try_files $ uri = 404;
    root /var/www/yoursite.com/wp-admin;
    / 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/;
    }
    }