Utilisez Docker Compose, Nginx et MariaDB pour mettre en œuvre le renforcement de la sécurité des applications PHP
Avec l'apparition fréquente d'attaques réseau et de fuites de données, la protection de la sécurité des applications et des bases de données est devenue de plus en plus importante. Dans les applications PHP, l'utilisation de Docker Compose, Nginx et MariaDB peuvent renforcer la sécurité et fournir certaines mesures de protection de sécurité. Cet article explique comment utiliser ces outils pour renforcer la sécurité et fournit quelques exemples de code.
Docker Compose est un outil permettant de définir et d'exécuter des applications Docker multi-conteneurs. En utilisant Docker Compose, vous pouvez facilement gérer l'environnement d'exécution, le site Web et la base de données des applications PHP.
Tout d'abord, créez un fichier appelé docker-compose.yml
et copiez-y le code suivant : 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
et base de données
. Le service web
est utilisé pour exécuter des applications PHP, tandis que le service db
est utilisé pour exécuter la base de données MariaDB. L'instruction build
spécifie le Dockerfile utilisé lorsque le service web
crée l'image. L'instruction ports
mappe le port 80 du conteneur au port 8000 de l'hôte. volumes
monte le répertoire local ./web
dans le répertoire /var/www/html
du conteneur pour le stockage persistant et le débogage en temps réel. La directive depends_on
précise que le service web
dépend du service db
. Créez un dossier nommé web
dans le répertoire où se trouve docker-compose.yml
, et créez un dossier nommé Dockerfile dans ce dossier code> fichier et copiez-y le code suivant : 🎜rrreee🎜Le code ci-dessus utilise l'image Apache PHP 7.4 officiellement fournie comme image de base et installe des extensions pour MariaDB et PostgreSQL. 🎜<ol start="2">🎜Utiliser Nginx🎜🎜🎜Nginx est un serveur HTTP et proxy inverse hautes performances qui peut être utilisé pour protéger les applications PHP contre les attaques Web courantes. Nous allons configurer certaines mesures de sécurité à l'aide de Nginx. 🎜🎜Créez un dossier nommé <code>nginx
dans le répertoire où se trouve le service web
, et créez un dossier nommé default.conf
dans le dossier > et copiez-y le code suivant : 🎜rrreee🎜Le code ci-dessus définit un hôte virtuel Nginx et configure la configuration de base du site Web. La directive root
spécifie le répertoire racine des fichiers du site Web et la directive index
spécifie le fichier d'index par défaut. La directive location
est utilisée pour traiter les requêtes URL. La directive try_files
tente de faire correspondre le fichier si le fichier n'existe pas, la requête sera redirigée vers le . fichier index.php
. La directive fastcgi
est utilisée pour traiter les fichiers PHP et transmettre la requête au processus PHP-FPM. 🎜db
dans le répertoire où se trouve docker-compose.yml
, et créez un dossier nommé my.cnf dans le dossier
fichier et copiez-y le code suivant : 🎜rrreee🎜Le code ci-dessus spécifie l'adresse IP liée à MariaDB comme 0.0.0.0
pour autoriser les connexions à partir de n'importe quelle adresse IP. Cela augmente l'accessibilité de la base de données. 🎜docker-compose.yml
dans le terminal et exécutez la commande suivante pour démarrer le conteneur : 🎜rrreee 🎜Cette commande construira des conteneurs qui démarreront les services web
et db
. Le paramètre -d
est utilisé pour exécuter le conteneur en arrière-plan. 🎜🎜Jusqu'à présent, nous avons implémenté avec succès le renforcement de la sécurité des applications PHP à l'aide de Docker Compose, Nginx et MariaDB. En utilisant un environnement de programmation conteneurisé, nous pouvons facilement gérer et sécuriser les applications et les bases de données, offrant un certain niveau de sécurité. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!