Maison  >  Article  >  développement back-end  >  Renforcement de la sécurité des applications PHP à l'aide de Docker Compose, Nginx et MariaDB

Renforcement de la sécurité des applications PHP à l'aide de Docker Compose, Nginx et MariaDB

WBOY
WBOYoriginal
2023-10-12 09:02:111309parcourir

使用Docker Compose、Nginx和MariaDB实现PHP应用程序的安全加固

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.

  1. Utilisation de Docker Compose

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

上述代码定义了两个服务:webdbweb服务用于运行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的扩展。

  1. 使用Nginx

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进程。

  1. 使用MariaDB

MariaDB是一个开源的关系型数据库管理系统,可以用于存储和管理应用程序的数据。我们将使用MariaDB来存储PHP应用程序的数据,并设置一些安全措施。

docker-compose.yml所在目录下创建一个名为db的文件夹,并在该文件夹中创建一个名为my.cnf的文件,并将以下代码复制到其中:

[mysqld]
bind-address = 0.0.0.0

上述代码指定了MariaDB绑定的IP地址为0.0.0.0,以允许来自任意IP地址的连接。这样可以增加数据库的可访问性。

  1. 运行容器

在终端中导航到docker-compose.yml所在的目录,并运行以下命令启动容器:

docker-compose up -d

该命令将构建和启动webdb服务的容器。-drrreee

Le code ci-dessus définit deux services : 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. 🎜
    🎜Utilisation de MariaDB🎜🎜🎜MariaDB est un système de gestion de base de données relationnelle open source qui peut être utilisé pour stocker et gérer les données d'application. Nous utiliserons MariaDB pour stocker les données de l'application PHP et mettre en place quelques mesures de sécurité. 🎜🎜Créez un dossier nommé 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. 🎜
      🎜Exécutez le conteneur🎜🎜🎜 Accédez au répertoire où se trouve 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn