使用Docker Compose、Nginx和MariaDB實現PHP應用程式的安全加固
隨著網路攻擊和資料外洩的頻繁發生,保護應用程式和資料庫的安全變得愈發重要。在PHP應用程式中,使用Docker Compose、Nginx和MariaDB可以實現安全加固,並提供一定的安全保護措施。本文將介紹如何使用這些工具進行安全加固,並提供一些程式碼範例。
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
上述程式碼定義了兩個服務: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
參數用於後台運行容器。
至此,我們已經成功地使用Docker Compose、Nginx和MariaDB實現了PHP應用程式的安全加固。透過使用容器化的程式設計環境,我們可以輕鬆地管理和保護應用程式和資料庫,提供一定程度的安全保護。
以上是使用Docker Compose、Nginx和MariaDB實現PHP應用程式的安全加固的詳細內容。更多資訊請關注PHP中文網其他相關文章!