Verwenden Sie Docker Compose, Nginx und MariaDB, um die Sicherheitshärtung von PHP-Anwendungen zu implementieren.
Angesichts des häufigen Auftretens von Netzwerkangriffen und Datenlecks wird der Schutz der Sicherheit von Anwendungen und Datenbanken immer wichtiger. In PHP-Anwendungen kann mit Docker Compose, Nginx und MariaDB eine Sicherheitshärtung erreicht und bestimmte Sicherheitsschutzmaßnahmen bereitgestellt werden. In diesem Artikel wird erläutert, wie diese Tools zur Sicherheitshärtung verwendet werden, und es werden einige Codebeispiele bereitgestellt.
Docker Compose ist ein Tool zum Definieren und Ausführen von Docker-Anwendungen mit mehreren Containern. Durch die Verwendung von Docker Compose können Sie die laufende Umgebung, Website und Datenbank von PHP-Anwendungen einfach verwalten.
Erstellen Sie zunächst eine Datei mit dem Namen docker-compose.yml
und kopieren Sie den folgenden Code hinein: 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
und db
. Der web
-Dienst wird zum Ausführen von PHP-Anwendungen verwendet, während der db
-Dienst zum Ausführen der MariaDB-Datenbank verwendet wird. Die build
-Anweisung gibt die Docker-Datei an, die verwendet wird, wenn der web
-Dienst das Image erstellt. Die ports
-Anweisung ordnet den Port 80 des Containers dem Port 8000 zu. volumes
-Direktive mountet das lokale Verzeichnis ./web
im Verzeichnis /var/www/html
des Containers für dauerhafte Speicherung und Echtzeit-Debugging. Die depends_on
-Direktive gibt an, dass der web
-Dienst vom db
-Dienst abhängt. Erstellen Sie einen Ordner mit dem Namen web
in dem Verzeichnis, in dem sich docker-compose.yml
befindet, und erstellen Sie in dieser Ordnercodedatei einen Ordner mit dem Namen Dockerfile , und kopieren Sie den folgenden Code hinein: 🎜rrreee🎜Der obige Code verwendet das offiziell bereitgestellte PHP 7.4 Apache-Image als Basis-Image und installiert die MariaDB- und PostgreSQL-Erweiterungen. 🎜<ol start="2">🎜Nginx verwenden🎜🎜🎜Nginx ist ein leistungsstarker HTTP- und Reverse-Proxy-Server, der zum Schutz von PHP-Anwendungen vor häufigen Webangriffen verwendet werden kann. Wir werden einige Sicherheitsmaßnahmen mit Nginx konfigurieren. 🎜🎜Erstellen Sie einen Ordner mit dem Namen <code>nginx
in dem Verzeichnis, in dem sich der web
-Dienst befindet, und erstellen Sie einen Ordner mit dem Namen default.conf
im Ordner > Datei und kopieren Sie den folgenden Code hinein: 🎜rrreee🎜Der obige Code definiert einen virtuellen Nginx-Host und richtet die grundlegende Website-Konfiguration ein. Die root
-Direktive gibt das Stammverzeichnis der Website-Dateien an, und die index
-Direktive gibt die Standardindexdatei an. Die location
-Direktive wird zum Verarbeiten von URL-Anfragen verwendet. Die try_files
-Direktive versucht, die Datei abzugleichen. Wenn die Datei nicht vorhanden ist, wird die Anfrage an den index umgeleitet .php
-Datei. Die fastcgi
-Direktive wird verwendet, um PHP-Dateien zu verarbeiten und die Anfrage an den PHP-FPM-Prozess weiterzuleiten. 🎜db
in dem Verzeichnis, in dem sich docker-compose.yml
befindet, und erstellen Sie einen Ordner mit dem Namen my.cnf im Ordner
Datei und kopieren Sie den folgenden Code hinein: 🎜rrreee🎜Der obige Code gibt die an MariaDB gebundene IP-Adresse als 0.0.0.0
an, um Verbindungen von jeder IP-Adresse aus zu ermöglichen. Dies erhöht die Zugänglichkeit der Datenbank. 🎜docker-compose.yml
befindet, und führen Sie den folgenden Befehl aus, um den Container zu starten: 🎜rrreee 🎜Dieser Befehl erstellt Container, die die Dienste web
und db
starten. Der Parameter -d
wird verwendet, um den Container im Hintergrund auszuführen. 🎜🎜Bisher haben wir die Sicherheitshärtung von PHP-Anwendungen mit Docker Compose, Nginx und MariaDB erfolgreich implementiert. Durch den Einsatz einer containerisierten Programmierumgebung können wir Anwendungen und Datenbanken einfach verwalten und sichern und so ein gewisses Maß an Sicherheit bieten. 🎜Das obige ist der detaillierte Inhalt vonSicherheitshärtung von PHP-Anwendungen mit Docker Compose, Nginx und MariaDB. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!