Host beberapa VHost dengan pengguna berbeda di Nginx

Hal paling normal di dunia saat Anda memiliki server, adalah memikirkan tentang keamanan dan lebih banyak keamanan, Anda tidak akan pernah cukup paranoid

Praktik yang agak umum dan TIDAK ADA yang direkomendasikan, adalah menggunakan pengguna yang sama untuk semua database, lebih buruk lagi jika root digunakan, yang luar biasa kelihatannya, ada yang (karena gelandangan atau ketidaktahuan) melakukan ini, saya sudah berbicara tentang mengapa Anda TIDAK boleh bertindak seperti ini di posting lainSekarang saatnya menjelaskan bagaimana dan mengapa lebih baik memisahkan pemrosesan server web di pengguna yang berbeda, kali ini akan menggunakan Nginx.

Dedicated Server_SubImage

Apa itu pengguna dan server web?

Untuk menjelaskannya secara singkat dan sederhana, server web (apache, nginx, apa pun) perlu membuka proses di sistem, proses yang akan menjadi orang yang mengambil file dari HDD (gambar, dll.) Dan membuatnya tersedia untuk browser klien. Server web tidak bisa begitu saja mengambil file dan memanipulasinya menjadi bukan siapa-siapa, artinya, ia membutuhkan pengguna yang akan menjadi orang yang akan melakukan semua ini pada akhirnya, dan pengguna itu adalah yang saya bicarakan, apakah Anda mengerti?

Apa artinya memisahkan dalam beberapa pengguna?

Misalkan di server kami, kami memiliki 2 situs web, milik kami yang merupakan proyek pribadi, dan satu lagi (mari kita bayangkan itu pacar atau saudara laki-laki kita). Bahkan ketika kami menggunakan database terpisah dan pengguna yang berbeda untuk mengaksesnya, pada akhirnya file dari kedua situs web tersebut dimanipulasi oleh pengguna yang sama, pemrosesan PHP dikelola oleh pengguna yang sama untuk semua situs (biasanya www-data). Ini bukan praktik yang disarankan, lebih baik semuanya dipisahkan dengan baik, seperti kata pepatah lama, lebih baik aman daripada menyesal.

Ok saya mengerti, bagaimana cara melakukannya dengan Nginx

2000px-Nginx_logo.svg

Hal pertama yang perlu diperhatikan adalah Nginx tidak memiliki modul sendiri yang menangani pemrosesan PHP seperti Apache, untuk Nginx kita perlu menggunakan PHP-CGI atau PHP-FPM, yang berfungsi sama baiknya (atau lebih baik) daripada Apache. Jadi untuk memisahkan pemrosesan PHP antar pengguna yang berbeda, kita perlu mengubah baris dalam file konfigurasi PHP (CGI atau FPM), bukan Nginx itu sendiri.

Misalkan Anda menggunakan PHP-FPM, kami akan membuat file konfigurasi kolam Untuk situs tertentu, yaitu pool adalah cara untuk memisahkan pemrosesan PHP dari PHP-FPM, tetapi kami membahas beberapa bagian.

1. Pertama kita harus tahu pengguna mana dari sistem yang akan kita gunakan, saya anggap kita masih belum membuat dan yah, mari kita buat:

Semua perintah berikut HARUS dijalankan dengan hak akses administratif, baik dengan root langsung atau menggunakan sudo

adduser blog

Kami akan memulai proses normal membuat pengguna, memasukkan kata sandi, dll.

Saya blog pengguna hanya untuk mengikuti contoh, bahwa situs pertama yang akan kita host adalah blog, nah itu ... untuk mengetahui setiap pengguna dengan situs mana yang terkait

1. Pertama-tama, buka /etc/php5/fpm/pool.d/:

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

2. Sekarang, kita akan membuat file bernama blog.conf:

touch blog.conf

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

Edit file blog.conf dengan nano ... misalnya: sudo nanoblog.conf
[blog] pengguna = blog
grup = blog
dengarkan = / var / run / php5-fpm-blog.sock listening.owner = blog
Listen.group = blog
pm = sesuai permintaan pm.max_children = 96 chdir = /

Catatan: Apa yang saya tandai dengan warna merah adalah apa yang harus mereka modifikasi tergantung pada pengguna yang mereka buat sebelumnya. Misalnya, jika mereka membuat VHost lain dengan pengguna lain (forum misalnya) maka alih-alih blog cukup letakkan forum di setiap baris, apakah dipahami?

4. Setelah konfigurasi kumpulan baru (file blog.conf yang baru saja kita buat dan edit), giliran untuk memberi tahu Nginx VHost agar menggunakan kaus kaki yang berbeda untuk VHost tersebut, untuk situs ini. Kaus kaki yang akan digunakan adalah yang sebelumnya kita nyatakan (/var/run/php5-fpm-blog.sock). Mari edit Nginx VHost dan di bagian pemrosesan PHP, kami menunjukkan untuk menggunakan kaus kaki itu. Sebagai contoh:

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

Seperti yang Anda lihat, saya menunjukkan bahwa pemrosesan PHP dari VHost itu (baris tersebut misalnya di dalam / etc / nginx / sites-enabled / vhost-blog) lakukan dengan kaus kaki yang ditemukan di /var/run/php5-fpm-blog.sock ... yang merupakan yang sebelumnya kita buat saat mengedit /etc/php5/fpm/pool.d/blog.conf ... adalah itu tidak mengerti?

5. Setelah ini selesai, kami memulai ulang kedua layanan (php5-fpm dan nginx) dan voila, kami akan melihat bahwa pemrosesan situs itu (vhost) TIDAK dilakukan oleh www-data atau root atau siapa pun yang serupa, tetapi oleh pengguna yang kami didefinisikan sebelumnya.

Di sini saya tunjukkan output dari a ps tambahan | grep fpm di salah satu server node saya:

ps aux | grep fpm ebook 586 0.0 0.0 349360 1204? S Mar30 0:00 php-fpm: ebook ebook kolam renang 589 0.0 0.0 349360 1204? S Mar30 0:00 php-fpm: ebook pool www 608 0.0 0.2 350084 5008? S Mar30 0:00 php-fpm: pool 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? 0 Mar 00:3 php-fpm: majalah pool tv1818 1.7 1.7 437576 36396 09? S 55:0 46:2264 php-fpm: majalah majalah pool 1.9 1.7 437332 35884 10? S 15:0 26:2338 php-fpm: majalah biliar murid 4.3 1.0 428992 22196 10? S 18:0 53:2413 php-fpm: majalah murid kolam 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 0 Apr 16:7900 php-fpm: pool cgr murid 0.3 2.5 457052 52444 25? S Apr20 23:11021 php-fpm: pool pupil pupil 0.4 2.5 458316 52864 28? S Apr5 57:11254 php-fpm: pool pupil cgr 0.0 1.0 363152 21708 28? S 0 Apr 12:13184 php-fpm: pool cgr cgr 0.0 1.0 362872 21360 28? S 0 Apr 08:XNUMX php-fpm: pool cgr

Seperti yang Anda lihat ... memisahkan pemrosesan PHP dengan pengguna menggunakan Nginx + PHP-FPM sangat mudah, di sana Anda melihat ada beberapa pool, karena ada beberapa pengguna.

Kesimpulan

Ketika datang ke server, Anda tidak pernah cukup paranoid ... keamanan bukanlah sesuatu untuk dimainkan, semakin kami selalu berusaha untuk meningkatkan keamanan server kami dan layanan mereka, semakin kecil kemungkinan kami akan takut dengan (berhasil) upaya hack atau yang serupa 😉


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.

  1.   pemburu dijo

    Gaara, saat ini hal-hal tersebut harus diotomatiskan semaksimal mungkin, saya sarankan anda mencoba Ansible. Tanpa agen, Anda hanya perlu python di host jarak jauh, sangat mudah dikonfigurasi, file yaml, template Jinja.

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

    1.    KZKG ^ Gaara dijo

      Mari kita lihat, itu tidak selalu hanya untuk situs WordPress, dan ... haha ​​mungkin Mungkin klik volao, tapi saya lebih suka tahu persis bagaimana semuanya bekerja di server, bahkan jika saya harus menghabiskan 1 menit untuk membuat kaus kaki baru dan VHost baru 😀

      1.    pemburu dijo

        Dengan Ansible Anda mengotomatiskan semuanya, Anda melakukan apa pun yang Anda inginkan, keuntungan dari metode ini adalah Anda merangkum latihan dan kemudian mengeksekusi sesuka hati, bayangkan Anda memiliki situs yang sangat banyak dan Anda ingin melakukan load balancing antar server aplikasi, ini harus dikonfigurasi persis sama Anda tidak dapat melewatkan satu langkah atau melakukan sesuatu yang berbeda di salah satunya, dapatkah Anda bayangkan melakukan prosedur langkah demi langkah 4 kali? Dengan Ansible, semudah menambahkan nama host ke file inventaris dan Voilá !!

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

      2.    pemburu dijo

        Maaf tentang kultus Ansible, tetapi ini adalah salah satu teknologi yang Anda temukan dan Anda ingin semua orang menggunakannya sekarang karena sangat keren dan praktis, seperti ketika Anda menemukan NGINX dan Anda ingin semua teman Anda segera meninggalkan Apache.

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

  2.   mstaaravin dijo
  3.   busuk87 dijo

    Saya (atau belajar untuk menjadi) seorang pengembang dan dengan NGIX saya mengalami banyak masalah saat mengkonfigurasi nginx + php-fpm. Saya tahu bahwa distro archlinux bukan yang terbaik untuk menjadikannya sebagai server, tetapi setiap kali saya memperbarui versi ngix atau php semuanya selalu macet jadi saya menyerah mencoba lol ... Untuk hari ini saya tetap menggunakan Apache + klasik PHP tetapi saya akan melihat apakah saya menggunakan NGIX lagi ... mungkin di mesin virtual

    1.    pemburu dijo

      Mentalitasnya berubah sedikit, nginx menyajikan konten statis dan berfungsi sebagai proxy balik untuk php-fpm yang menjalankan PHP asli, Anda harus memulai sebagian dan mencapai penerapan langkah demi langkah, cari panduan untuk menerapkan kerangka kerja yang Anda gunakan, masing-masing memiliki detailnya berdasarkan nama publik, statis, sumber daya, dll ...

  4.   anonim dijo

    Bantulah komunitas dengan meninggalkan kata "hostear", yang sebenarnya tidak ada. Demi Tuhan, apakah begitu sulit untuk mengatakan "tuan rumah"?

  5.   Wil dijo

    Salam, mengikuti contoh Anda Saya ingin tahu apakah sebuah pool dapat dibuat hanya untuk backen wordpress, yaitu, untuk wp-admin membuat soket baru untuk koneksi masuk ke backend

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