Rumah > pembangunan bahagian belakang > tutorial php > Penyulitan selamat aplikasi PHP dengan Docker Compose, Nginx dan MariaDB

Penyulitan selamat aplikasi PHP dengan Docker Compose, Nginx dan MariaDB

WBOY
Lepaskan: 2023-10-12 14:50:01
asal
980 orang telah melayarinya

通过Docker Compose、Nginx和MariaDB实现PHP应用程序的安全加密

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: {}
Salin selepas log masuk

在这个例子中,我们定义了三个服务: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;
    }
}
Salin selepas log masuk

在这个配置文件中,我们定义了一个名为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!";
?>
Salin selepas log masuk

这个示例非常简单,它只是输出了"Hello, World!"。你可以根据自己的需求来编写更复杂的PHP应用程序。

现在,我们可以通过运行以下命令来启动我们的应用程序:

docker-compose up -d
Salin selepas log masuk

在启动完成后,你可以通过打开浏览器并访问http://localhostrrreee

Dalam contoh ini, kami mentakrifkan tiga perkhidmatan: nginx, php dan db. Perkhidmatan 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 bernama myapp.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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan