首頁  >  文章  >  後端開發  >  使用Docker Compose、Nginx和MariaDB實現PHP應用程式的安全加固

使用Docker Compose、Nginx和MariaDB實現PHP應用程式的安全加固

WBOY
WBOY原創
2023-10-12 09:02:111309瀏覽

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

使用Docker Compose、Nginx和MariaDB實現PHP應用程式的安全加固

隨著網路攻擊和資料外洩的頻繁發生,保護應用程式和資料庫的安全變得愈發重要。在PHP應用程式中,使用Docker Compose、Nginx和MariaDB可以實現安全加固,並提供一定的安全保護措施。本文將介紹如何使用這些工具進行安全加固,並提供一些程式碼範例。

  1. 使用Docker Compose

Docker Compose是用來定義和執行多容器Docker應用程式的工具。透過使用Docker Compose,可以輕鬆管理PHP應用程式的運作環境、網站和資料庫。

首先,建立一個名為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服務的容器。 -d參數用於後台運行容器。

至此,我們已經成功地使用Docker Compose、Nginx和MariaDB實現了PHP應用程式的安全加固。透過使用容器化的程式設計環境,我們可以輕鬆地管理和保護應用程式和資料庫,提供一定程度的安全保護。

以上是使用Docker Compose、Nginx和MariaDB實現PHP應用程式的安全加固的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn