Heim > Backend-Entwicklung > PHP-Tutorial > Sicherheitshärtung von PHP-Anwendungen mit Docker Compose, Nginx und MariaDB

Sicherheitshärtung von PHP-Anwendungen mit Docker Compose, Nginx und MariaDB

WBOY
Freigeben: 2023-10-12 09:08:01
Original
1375 Leute haben es durchsucht

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

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.

  1. Verwenden von Docker Compose

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
Nach dem Login kopieren

上述代码定义了两个服务: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
Nach dem Login kopieren

上述代码使用官方提供的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;
    }
}
Nach dem Login kopieren

上述代码定义了一个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
Nach dem Login kopieren

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

  1. 运行容器

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

docker-compose up -d
Nach dem Login kopieren

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

Der obige Code definiert zwei Dienste: 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. 🎜
    🎜MariaDB verwenden🎜🎜🎜MariaDB ist ein relationales Open-Source-Datenbankverwaltungssystem, das zum Speichern und Verwalten von Anwendungsdaten verwendet werden kann. Wir werden MariaDB verwenden, um die Daten der PHP-Anwendung zu speichern und einige Sicherheitsmaßnahmen einzurichten. 🎜🎜Erstellen Sie einen Ordner mit dem Namen 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. 🎜
      🎜Führen Sie den Container aus🎜🎜🎜 Navigieren Sie im Terminal zu dem Verzeichnis, in dem sich 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage