Rumah > Artikel > pembangunan bahagian belakang > Penyulitan selamat aplikasi PHP dengan Docker Compose, Nginx dan MariaDB
Penyulitan selamat aplikasi PHP dengan Docker Compose, Nginx dan MariaDB
Dalam era digital hari ini, keselamatan data merupakan isu yang sangat penting. Untuk kebanyakan aplikasi, melindungi data pengguna dan maklumat sensitif tidak boleh diabaikan. Artikel ini akan memperkenalkan cara menggunakan Docker Compose, Nginx dan MariaDB untuk melaksanakan penyulitan selamat aplikasi PHP. Pada masa yang sama, kami juga akan menyediakan beberapa contoh kod khusus untuk membantu pembaca memahami dengan lebih baik.
Pertama, kita perlu memahami konsep asas Docker Compose. Docker Compose ialah alat untuk Docker yang membantu kami mentakrif dan mengurus berbilang bekas Docker dengan menggunakan fail YAML. Dengan Docker Compose, kami boleh mencipta dan mengurus berbilang bekas dengan mudah untuk membina aplikasi yang lengkap.
Dalam contoh ini, kami akan menggunakan Docker Compose untuk mencipta tiga bekas: Nginx, PHP dan MariaDB. Nginx ialah pelayan web yang berkuasa dan pelayan proksi terbalik yang boleh mengendalikan permintaan HTTP dan memajukannya ke bekas yang betul. Bekas PHP akan digunakan untuk menjalankan aplikasi PHP kami. MariaDB digunakan untuk menyimpan dan mengurus pangkalan data kami.
Pertama, kita perlu mencipta fail YAML Compose Docker. Dalam contoh ini, kami akan memanggilnya docker-compose.yml
. Berikut ialah contoh mudah: docker-compose.yml
。以下是一个简单的示例:
version: '3' services: nginx: image: nginx:latest ports: - "80:80" volumes: - ./nginx/conf.d:/etc/nginx/conf.d depends_on: - php php: image: php:7.4-fpm volumes: - ./php/www:/var/www/html depends_on: - db db: image: mariadb:latest environment: - MYSQL_ROOT_PASSWORD=mysecretpassword volumes: - db_data:/var/lib/mysql volumes: db_data: {}
在这个例子中,我们定义了三个服务:nginx、php和db。nginx
服务使用了最新的Nginx镜像,并将容器的80端口映射到主机的80端口。同时,我们将./nginx/conf.d
目录挂载到/etc/nginx/conf.d
目录,这样我们就可以轻松地配置Nginx服务器。php
服务使用了PHP 7.4-fpm镜像,并将./php/www
目录挂载到/var/www/html
目录。最后,db
服务使用了最新的MariaDB镜像,并且通过MYSQL_ROOT_PASSWORD
环境变量设置了Root密码。同时,我们使用了一个卷db_data
来持久化存储数据库。
接下来,我们需要为我们的PHP应用程序创建一个Nginx配置文件。在./nginx/conf.d
目录下创建一个名为myapp.conf
的文件,并添加以下内容:
server { listen 80; server_name myapp.com; root /var/www/html; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { try_files $uri =404; fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_pass php:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
在这个配置文件中,我们定义了一个名为myapp.com
的虚拟主机,将80端口与我们的PHP应用程序关联起来。同时,我们将/var/www/html
目录设置为根目录,并将index.php
文件设为默认索引文件。在location /
部分,我们定义了当请求的文件不存在时,将请求转发到index.php
文件。location ~ .php$
部分是用来处理.php文件的请求,并将其转发到PHP容器的9000端口。
最后,我们需要为我们的PHP应用程序创建一个index.php
文件,并将其保存在./php/www
目录下:
<?php echo "Hello, World!"; ?>
这个示例非常简单,它只是输出了"Hello, World!"。你可以根据自己的需求来编写更复杂的PHP应用程序。
现在,我们可以通过运行以下命令来启动我们的应用程序:
docker-compose up -d
在启动完成后,你可以通过打开浏览器并访问http://localhost
rrreee
nginx
menggunakan imej Nginx terkini dan memetakan port 80 bekas ke port 80 hos. Pada masa yang sama, kami melekapkan direktori ./nginx/conf.d
ke direktori /etc/nginx/conf.d
supaya kami boleh mengkonfigurasi pelayan Nginx dengan mudah . Perkhidmatan php
menggunakan imej PHP 7.4-fpm dan melekapkan direktori ./php/www
ke direktori /var/www/html
. Akhir sekali, perkhidmatan db
menggunakan imej MariaDB terkini dan kata laluan Root ditetapkan melalui pembolehubah persekitaran MYSQL_ROOT_PASSWORD
. Pada masa yang sama, kami menggunakan volum db_data
untuk mengekalkan pangkalan data. Seterusnya, kami perlu mencipta fail konfigurasi Nginx untuk aplikasi PHP kami. Cipta fail bernama myapp.conf
dalam direktori ./nginx/conf.d
dan tambah kandungan berikut: rrreee
Dalam fail konfigurasi ini, kami mentakrifkan Cipta maya hos bernamamyapp.com
dan kaitkan port 80 dengan aplikasi PHP kami. Pada masa yang sama, kami menetapkan direktori /var/www/html
sebagai direktori akar dan fail index.php
sebagai fail indeks lalai. Dalam bahagian location /
, kami mentakrifkan bahawa apabila fail yang diminta tidak wujud, permintaan akan dimajukan ke fail index.php
. Bahagian location ~ .php$
digunakan untuk mengendalikan permintaan untuk fail .php dan memajukannya ke port 9000 bekas PHP. Akhir sekali, kita perlu mencipta fail index.php
untuk aplikasi PHP kami dan simpan di bawah direktori ./php/www
: 🎜rrreee🎜Ini Contohnya ialah sangat mudah, ia hanya mengeluarkan "Hello, World!". Anda boleh menulis aplikasi PHP yang lebih kompleks mengikut keperluan anda. 🎜🎜Kini, kami boleh memulakan aplikasi kami dengan menjalankan arahan berikut: 🎜rrreee🎜Selepas permulaan selesai, anda boleh melihat aplikasi anda dengan membuka pelayar dan melawati program http://localhost
. Anda sepatutnya dapat melihat "Hello, World!" 🎜🎜Dengan menggunakan Docker Compose, Nginx dan MariaDB, kami berjaya mencipta aplikasi PHP yang selamat dan disulitkan. Nginx bertindak sebagai pelayan proksi terbalik dan mampu mengendalikan permintaan HTTP dan memajukannya ke bekas yang betul. Bekas PHP ialah persekitaran berjalan aplikasi kami dan dapat berkomunikasi dengan bekas Nginx. MariaDB digunakan untuk menyimpan dan mengurus pangkalan data kami. 🎜🎜Dalam aplikasi praktikal, kami boleh melindungi keselamatan data dengan menggunakan sijil SSL. Kami boleh mengkonfigurasi sijil SSL dalam bekas Nginx untuk memastikan semua permintaan HTTP disulitkan. Pada masa yang sama, kami juga boleh menggunakan mekanisme keselamatan MariaDB, seperti kawalan akses dan storan yang disulitkan, untuk melindungi data dalam pangkalan data. 🎜🎜Ringkasnya, dengan Docker Compose, Nginx dan MariaDB, kami boleh mencipta dan mengurus aplikasi PHP yang selamat dan disulitkan dengan mudah. Dengan menggunakan alatan dan teknologi ini, kami boleh melindungi keselamatan data pengguna dan maklumat sensitif dengan lebih baik. Kami berharap artikel ini berguna kepada pembaca dan menyediakan rujukan praktikal untuk aplikasi anda. 🎜Atas ialah kandungan terperinci Penyulitan selamat aplikasi PHP dengan Docker Compose, Nginx dan MariaDB. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!