Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengerasan keselamatan aplikasi PHP menggunakan Docker Compose, Nginx dan MariaDB

Pengerasan keselamatan aplikasi PHP menggunakan Docker Compose, Nginx dan MariaDB

WBOY
WBOYasal
2023-10-12 09:02:111254semak imbas

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

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.

  1. Menggunakan Docker Compose

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

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

Kod di atas mentakrifkan dua perkhidmatan: 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. 🎜
    🎜Menggunakan MariaDB🎜🎜🎜MariaDB ialah sistem pengurusan pangkalan data hubungan sumber terbuka yang boleh digunakan untuk menyimpan dan mengurus data aplikasi. Kami akan menggunakan MariaDB untuk menyimpan data aplikasi PHP dan menyediakan beberapa langkah keselamatan. 🎜🎜Buat folder bernama 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. 🎜
      🎜Jalankan bekas🎜🎜🎜 Navigasi ke direktori di mana 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn