Hoskan beberapa VHost dengan pengguna yang berbeza di Nginx

Perkara yang paling normal di dunia apabila anda mempunyai pelayan, adalah memikirkan keselamatan dan keselamatan yang lebih banyak, anda tidak boleh cukup paranoid

Amalan yang agak biasa dan TIDAK dianjurkan, adalah menggunakan pengguna yang sama untuk semua pangkalan data, lebih buruk lagi jika root digunakan, yang luar biasa sepertinya, ada yang (kerana kekhilafan atau kejahilan) lakukan ini, saya sudah membincangkan mengapa anda TIDAK boleh bertindak seperti ini satu lagi jawatanKini tiba masanya untuk menjelaskan bagaimana dan mengapa lebih baik untuk memisahkan pemprosesan pelayan web di pengguna yang berbeza, kali ini akan digunakan Nginx.

DedicatedServer_SubImage

Apa itu pengguna dan pelayan web?

Untuk menerangkannya dengan cara yang singkat dan sederhana, pelayan web (apache, nginx, apa sahaja) perlu membuka proses dalam sistem, proses yang akan mengambil fail dari HDD (gambar, dll.) Dan membuatnya tersedia untuk penyemak imbas pelanggan. Pelayan web tidak boleh hanya mengambil fail dan memanipulasinya menjadi tidak ada, iaitu, ia memerlukan pengguna yang akan melakukan semua ini pada akhirnya, dan pengguna itulah yang saya bicarakan, adakah anda faham?

Apa itu pemisahan dalam beberapa pengguna?

Mari kita anggap bahawa di pelayan kita mempunyai 2 laman web, yang merupakan projek peribadi, dan satu lagi (mari kita bayangkan itu teman wanita atau saudara kita). Walaupun kita menggunakan pangkalan data yang berasingan dan pengguna yang berbeda untuk mengaksesnya, pada akhirnya fail kedua-dua laman web dimanipulasi oleh pengguna yang sama, pemprosesan PHP dikendalikan oleh pengguna yang sama untuk semua laman web (biasanya data www). Ini bukan amalan yang disyorkan, lebih baik memisahkan semuanya dengan baik, seperti kata pepatah lama, lebih baik selamat daripada menyesal.

Ok saya faham, bagaimana saya melakukannya dengan Nginx

2000px-Nginx_logo.svg

Perkara pertama yang perlu diberi perhatian ialah Nginx tidak mempunyai modul sendiri yang mengendalikan pemprosesan PHP seperti yang dilakukan Apache, untuk Nginx kita perlu menggunakan PHP-CGI atau PHP-FPM, yang berfungsi sama baiknya (atau lebih baik) daripada Apache. Oleh itu, untuk memisahkan pemprosesan PHP di antara pengguna yang berbeza, kita perlu mengubah baris dalam fail konfigurasi PHP (CGI atau FPM), bukan Nginx itu sendiri.

Katakan anda menggunakan PHP-FPM, kami akan membuat fail konfigurasi kolam Untuk laman web tertentu, iaitu kumpulan adalah cara untuk memisahkan pemprosesan PHP dari PHP-FPM, tetapi kami membahagi-bahagikan.

1. Mula-mula kita mesti mengetahui pengguna sistem mana yang akan kita gunakan, saya akan menganggap bahawa kita masih belum membuat apa-apa dan baik, mari kita buat:

Semua arahan berikut WAJIB dilaksanakan dengan hak pentadbiran, baik dengan root langsung atau menggunakan sudo

adduser blog

Kami akan memulakan proses biasa membuat pengguna, memasukkan kata laluan, dll.

Saya membuat blog kepada pengguna hanya untuk mengikuti contoh, bahawa laman web pertama yang akan kita hoskan adalah blog, baik ... untuk mengetahui setiap pengguna dengan laman web mana yang berkaitan

1. Mula-mula mari pergi ke /etc/php5/fpm/pool.d/:

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

2. Sekarang, kami akan membuat fail bernama blog.conf:

touch blog.conf

3. Sekarang kita akan meletakkan konfigurasi kolam yang akan kita gunakan untuk blog VHost:

Edit fail blog.conf dengan nano ... contohnya: sudo nanoblog.conf
[blog] pengguna = blog
kumpulan = blog
dengar = / var / run / php5-fpm-blog.sock listen.owner = blog
dengar.kumpulan = blog
pm = ondemand pm.max_children = 96 chdir = /

Nota: Yang saya tandakan dengan warna merah adalah apa yang mesti mereka ubah bergantung kepada pengguna yang mereka buat sebelumnya. Contohnya, jika mereka membuat VHost lain dengan pengguna lain (forum misalnya) maka bukannya blog hanya meletakkan forum di setiap baris, tidak difahami?

4. Setelah konfigurasi kumpulan baru (fail blog.conf yang baru sahaja kita buat dan editgiliran untuk memberitahu Nginx VHost untuk menggunakan stoking yang berbeza untuk VHost itu, untuk laman web ini. Stoking yang akan digunakan adalah yang kami nyatakan sebelumnya (/var/run/php5-fpm-blog.sock). Mari kita edit Nginx VHost dan di bahagian pemprosesan PHP, kami menunjukkan untuk menggunakan stoking itu. Sebagai contoh:

lokasi ~ \ .php $ {if (! -f $ request_filename) {return 404; }
fastcgi_pass unix: / var / run / php5-fpm-blog.stokin;
sertakan fastcgi_params; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; fastcgi_read_timeout 300; }

Seperti yang anda lihat, saya menunjukkan bahawa pemprosesan PHP VHost itu (garis-garis tersebut misalnya di dalam / etc / nginx / sites-enabled / vhost-blog) lakukan dengan stoking yang terdapat di /var/run/php5-fpm-blog.sock ... yang mana yang kami buat sebelumnya semasa mengedit /etc/php5/fpm/pool.d/blog.conf ... adalah ia faham bukan?

5. Setelah ini selesai, kami mulakan semula kedua-dua perkhidmatan (php5-fpm dan nginx) dan voila, kami akan melihat bahawa pemprosesan laman web tersebut (vhost) TIDAK dilakukan oleh www-data atau root atau orang lain yang serupa, tetapi oleh pengguna yang kami ditakrifkan sebelumnya.

Di sini saya menunjukkan kepada anda output a ps aux | grep fpm di salah satu pelayan nod saya:

ps aux | grep fpm ebook 586 0.0 0.0 349360 1204? S Mar30 0:00 php-fpm: ebook kumpulan ebook 589 0.0 0.0 349360 1204? S Mar30 0:00 php-fpm: ebook kumpulan www 608 0.0 0.2 350084 5008? S Mar30 0:00 php-fpm: kumpulan 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 Mar0 00:3 php-fpm: pool tv3 tv615 0.0 0.0 349360 1204 30? S Mar0 00:3 php-fpm: majalah tv1818 kolam 1.7 1.7 437576 36396 09? S 55:0 46:2264 php-fpm: majalah pool pool 1.9 1.7 437332 35884 10? S 15:0 26:2338 php-fpm: murid majalah kumpulan 4.3 1.0 428992 22196 10? S 18:0 53:2413 php-fpm: majalah murid kumpulan 1.8 1.7 437764 36152 10? S 22:0 18:2754 php-fpm: majalah pool gutl 3.5 1.3 356724 27164 10? S 38:0 00:5624 php-fpm: pool gutl cgr 0.0 1.0 365168 22696 28? S Apr0 16:7900 php-fpm: pool cgr murid 0.3 2.5 457052 52444 25? S Apr20 23:11021 php-fpm: kumpulan murid murid 0.4 2.5 458316 52864 28? S Apr5 57:11254 php-fpm: kumpulan murid cgr 0.0 1.0 363152 21708 28? S Apr0 12:13184 php-fpm: pool cgr cgr 0.0 1.0 362872 21360 28? S Apr0 08:XNUMX php-fpm: pool cgr

Seperti yang anda lihat ... memisahkan pemprosesan PHP oleh pengguna menggunakan Nginx + PHP-FPM sangat mudah, di sana anda melihat bahawa terdapat beberapa kumpulan, kerana terdapat beberapa pengguna.

Kesimpulan

Ketika datang ke pelayan, anda tidak pernah cukup paranoid ... keselamatan bukanlah sesuatu yang boleh dimainkan, semakin kita selalu berusaha meningkatkan keselamatan pelayan dan perkhidmatan mereka, semakin kecil kemungkinan kita akan takut (berjaya) cubaan menggodam atau yang serupa 😉


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

  1.   penipu kata

    Gaara, pada masa sekarang perkara ini harus automatik sebanyak mungkin, saya cadangkan anda mencuba Ansible. Tanpa ejen, anda hanya memerlukan python pada host jauh, sangat mudah dikonfigurasi, fail yaml, templat Jinja.

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

    1.    KZKG ^ Gaara kata

      Mari kita lihat, itu tidak hanya untuk laman WordPress, dan ... haha ​​mungkin Ansible klik volao, tetapi saya lebih suka mengetahui dengan tepat bagaimana semuanya berfungsi di pelayan, walaupun saya perlu menghabiskan 1 minit untuk membuat stoking baru dan VHost baru 😀

      1.    penipu kata

        Dengan Ansible anda mengautomasikan semuanya, anda melakukan apa sahaja yang anda mahukan, kelebihan kaedah ini adalah anda merangkumi latihan tersebut dan kemudian melaksanakan sesuka hati, bayangkan bahawa anda mempunyai laman web yang banyak dimuat dan anda mahu melakukan load balancing antara pelayan aplikasi, ini harus dikonfigurasi sama seperti anda tidak boleh melangkau satu langkah atau melakukan perkara yang berbeza di salah satu daripadanya, bolehkah anda bayangkan melakukan prosedur langkah demi langkah 4 kali? Dengan Ansible semudah menambahkan nama host ke fail inventori dan Voilá !!

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

      2.    penipu kata

        Maaf atas pemujaan Ansible, tetapi ini adalah salah satu teknologi yang anda dapati dan anda mahukan semua orang menggunakannya sekarang kerana sangat sejuk dan praktikal, seperti ketika anda menjumpai NGINX dan anda mahu semua rakan anda meninggalkan Apache dengan segera.

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

  2.   mstaaravin kata
  3.   Reput87 kata

    Saya (atau belajar untuk menjadi) pembangun dan dengan NGIX, saya menghadapi banyak masalah semasa mengkonfigurasi nginx + php-fpm. Saya tahu bahawa distro archlinux bukanlah yang terbaik untuk menjadikannya sebagai pelayan, tetapi setiap kali saya mengemas kini versi ngix atau php semuanya selalu hancur sehingga saya melepaskan percubaan lol ... Untuk hari ini saya kekal dengan Apache klasik + PHP tetapi saya akan melihat jika saya berkeliling NGIX lagi ... mungkin di mesin maya

    1.    penipu kata

      Mentaliti sedikit berubah, nginx menyajikan kandungan statik dan berfungsi sebagai proksi terbalik untuk php-fpm iaitu yang menjalankan PHP yang sebenarnya, anda harus memulakan bahagian dan mencapai penyebaran langkah demi langkah, mencari panduan untuk menyebarkan kerangka kerja yang anda gunakan, masing-masing mempunyai perinciannya dengan nama orang ramai, statik, sumber, dll ...

  4.   Anonymous kata

    Adakah komuniti lebih senang meninggalkan perkataan "hostear", yang tidak ada. Demi Tuhan, adakah begitu sukar untuk mengatakan "tuan rumah"?

  5.   Wil kata

    Salam, mengikuti teladan anda, saya ingin tahu apakah kolam hanya dapat dibuat untuk backpress wordpress, iaitu untuk admin wp membuat soket baru untuk sambungan masuk ke backend

    lokasi / wp-pentadbir {
    root /var/www/yoursite.com/wp-admin;
    index index.php index.html index.htm;
    lokasi ~ ^ / wp-admin /(.+. php) $ {
    try_files $ uri = 404;
    root /var/www/yoursite.com/wp-admin;
    termasuk / 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/;
    }
    }