Gunakan Docker Compose, Nginx dan MariaDB untuk melaksanakan pengerasan keselamatan aplikasi PHP
Dengan serangan rangkaian dan kebocoran data yang kerap berlaku, melindungi keselamatan aplikasi dan pangkalan data menjadi semakin penting. Dalam aplikasi PHP, menggunakan Docker Compose, Nginx dan MariaDB boleh mencapai pengerasan keselamatan dan menyediakan langkah perlindungan keselamatan tertentu. Artikel ini menerangkan cara menggunakan alat ini untuk pengerasan keselamatan dan menyediakan beberapa contoh kod.
Docker Compose ialah alat untuk mentakrif dan menjalankan aplikasi Docker berbilang bekas. Dengan menggunakan Docker Compose, anda boleh mengurus persekitaran berjalan, tapak web dan pangkalan data aplikasi PHP.
Mula-mula, buat fail bernama docker-compose.yml
dan salin kod berikut ke dalamnya: docker-compose.yml
的文件,并将以下代码复制到其中:
version: '3' services: web: build: ./web ports: - 8000:80 volumes: - ./web:/var/www/html depends_on: - db db: image: mariadb environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=mydb volumes: - ./db:/var/lib/mysql
上述代码定义了两个服务:web
和db
。web
服务用于运行PHP应用程序,而db
服务用于运行MariaDB数据库。build
指令指定了web
服务构建镜像时使用的Dockerfile,ports
指令将容器的80端口映射到主机的8000端口,volumes
指令将本地的./web
目录挂载到容器的/var/www/html
目录,以便持久化存储和实时调试。depends_on
指令指定了web
服务依赖于db
服务。
在docker-compose.yml
所在目录下创建一个名为web
的文件夹,并在该文件夹中创建一个名为Dockerfile
的文件,并将以下代码复制到其中:
FROM php:7.4-apache RUN apt-get update && apt-get install -y libpq-dev && docker-php-ext-install pdo pdo_mysql mysqli
上述代码使用官方提供的PHP 7.4 Apache镜像作为基础镜像,并安装了MariaDB和PostgreSQL的扩展。
Nginx是一个高性能的HTTP和反向代理服务器,可以用于保护PHP应用程序免受常见的Web攻击。我们将使用Nginx配置一些安全措施。
在web
服务所在目录下创建一个名为nginx
的文件夹,并在该文件夹中创建一个名为default.conf
的文件,并将以下代码复制到其中:
server { listen 80; root /var/www/html; index index.php index.html index.htm; server_name localhost; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; } location ~ /.ht { deny all; } }
上述代码定义了一个Nginx虚拟主机,并设置了基本的网站配置。root
指令指定了网站文件的根目录,index
指令指定了默认的索引文件。location
指令用于处理URL请求,try_files
指令尝试匹配文件,如果文件不存在,则将请求重定向到index.php
文件。fastcgi
指令用于处理PHP文件,并将请求传递给PHP-FPM进程。
MariaDB是一个开源的关系型数据库管理系统,可以用于存储和管理应用程序的数据。我们将使用MariaDB来存储PHP应用程序的数据,并设置一些安全措施。
在docker-compose.yml
所在目录下创建一个名为db
的文件夹,并在该文件夹中创建一个名为my.cnf
的文件,并将以下代码复制到其中:
[mysqld] bind-address = 0.0.0.0
上述代码指定了MariaDB绑定的IP地址为0.0.0.0
,以允许来自任意IP地址的连接。这样可以增加数据库的可访问性。
在终端中导航到docker-compose.yml
所在的目录,并运行以下命令启动容器:
docker-compose up -d
该命令将构建和启动web
和db
服务的容器。-d
rrreee
web
dan db
. Perkhidmatan web
digunakan untuk menjalankan aplikasi PHP, manakala perkhidmatan db
digunakan untuk menjalankan pangkalan data MariaDB. Arahan build
menentukan Dockerfile yang digunakan apabila perkhidmatan web
membina imej Arahan ports
memetakan port kontena 80 ke port 8000 hos. volumes
memasang direktori ./web
setempat ke direktori /var/www/html
bekas untuk penyimpanan berterusan dan penyahpepijatan masa nyata. Arahan depends_on
menyatakan bahawa perkhidmatan web
bergantung pada perkhidmatan db
. Buat folder bernama web
dalam direktori di mana docker-compose.yml
terletak dan buat folder bernama Dockerfile dalam kod folder ini> fail dan salin kod berikut ke dalamnya: 🎜rrreee🎜Kod di atas menggunakan imej PHP 7.4 Apache yang disediakan secara rasmi sebagai imej asas dan memasang sambungan untuk MariaDB dan PostgreSQL. 🎜<ol start="2">🎜Menggunakan Nginx🎜🎜🎜Nginx ialah HTTP berprestasi tinggi dan pelayan proksi terbalik yang boleh digunakan untuk melindungi aplikasi PHP daripada serangan web biasa. Kami akan mengkonfigurasi beberapa langkah keselamatan menggunakan Nginx. 🎜🎜Buat folder bernama <code>nginx
dalam direktori tempat perkhidmatan web
terletak dan buat folder bernama default.conf
dalam folder > fail dan salin kod berikut ke dalamnya: 🎜rrreee🎜Kod di atas mentakrifkan hos maya Nginx dan menyediakan konfigurasi tapak web asas. Arahan root
menentukan direktori akar fail tapak web dan arahan index
menentukan fail indeks lalai. Arahan location
digunakan untuk memproses permintaan URL Arahan try_files
cuba memadankan fail Jika fail tidak wujud, permintaan akan diubah hala ke index.php
fail . Arahan fastcgi
digunakan untuk memproses fail PHP dan menghantar permintaan kepada proses PHP-FPM. 🎜db
dalam direktori di mana docker-compose.yml
terletak dan buat folder bernama my.cnf dalam folder
fail dan salin kod berikut ke dalamnya: 🎜rrreee🎜Kod di atas menentukan alamat IP yang terikat pada MariaDB sebagai 0.0.0.0
untuk membenarkan sambungan dari mana-mana alamat IP. Ini meningkatkan kebolehcapaian pangkalan data. 🎜docker-compose.yml
terletak di terminal dan jalankan arahan berikut untuk memulakan bekas: 🎜rrreee 🎜Arahan ini akan membina dan bekas yang memulakan perkhidmatan web
dan db
. Parameter -d
digunakan untuk menjalankan bekas di latar belakang. 🎜🎜Setakat ini, kami telah berjaya melaksanakan pengerasan keselamatan aplikasi PHP menggunakan Docker Compose, Nginx dan MariaDB. Dengan menggunakan persekitaran pengaturcaraan kontena, kami boleh mengurus dan melindungi aplikasi dan pangkalan data dengan mudah, menyediakan tahap keselamatan tertentu. 🎜Atas ialah kandungan terperinci Pengerasan keselamatan aplikasi PHP menggunakan Docker Compose, Nginx dan MariaDB. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!