>백엔드 개발 >PHP 튜토리얼 >Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 보안 강화

Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 보안 강화

WBOY
WBOY원래의
2023-10-12 09:02:111333검색

使用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이라는 파일을 만들고 다음 코드를 여기에 복사하세요. 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

위 코드는 web라는 두 가지 서비스를 정의합니다. DB. web 서비스는 PHP 애플리케이션을 실행하는 데 사용되는 반면, db 서비스는 MariaDB 데이터베이스를 실행하는 데 사용됩니다. build 명령은 web 서비스가 이미지를 빌드할 때 사용되는 Dockerfile을 지정합니다. ports 명령은 컨테이너의 포트 800에 매핑됩니다. 호스트 volumes 지시문은 영구 저장 및 실시간을 위해 로컬 ./web 디렉터리를 컨테이너의 /var/www/html 디렉터리에 마운트합니다. 디버깅. dependent_on 지시문은 web 서비스가 db 서비스에 종속되도록 지정합니다.

docker-compose.yml이 있는 디렉터리에 web이라는 폴더를 만들고, 이 폴더 code> 파일에 Dockerfile이라는 폴더를 만듭니다. 🎜rrreee🎜위 코드는 공식적으로 제공되는 PHP 7.4 Apache 이미지를 기본 이미지로 사용하고 MariaDB 및 PostgreSQL 확장 기능을 설치합니다. 🎜<ol start="2">🎜Nginx 사용🎜🎜🎜Nginx는 일반적인 웹 공격으로부터 PHP 애플리케이션을 보호하는 데 사용할 수 있는 고성능 HTTP 및 역방향 프록시 서버입니다. Nginx를 사용하여 몇 가지 보안 조치를 구성하겠습니다. 🎜🎜<code>web 서비스가 위치한 디렉토리에 nginx라는 폴더를 생성하고, 그 폴더에 default.conf라는 폴더를 생성하세요. 파일을 만들고 다음 코드를 복사하세요. 🎜rrreee🎜위 코드는 Nginx 가상 호스트를 정의하고 기본 웹사이트 구성을 설정합니다. root 지시문은 웹 사이트 파일의 루트 디렉터리를 지정하고 index 지시문은 기본 인덱스 파일을 지정합니다. location 지시문은 URL 요청을 처리하는 데 사용됩니다. try_files 지시문은 파일이 존재하지 않으면 요청이 index로 리디렉션됩니다. .php 파일. fastcgi 지시문은 PHP 파일을 처리하고 요청을 PHP-FPM 프로세스에 전달하는 데 사용됩니다. 🎜
    🎜MariaDB 사용🎜🎜🎜MariaDB는 애플리케이션 데이터를 저장하고 관리하는 데 사용할 수 있는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. MariaDB를 사용하여 PHP 애플리케이션의 데이터를 저장하고 몇 가지 보안 조치를 설정하겠습니다. 🎜🎜 docker-compose.yml이 있는 디렉토리에 db라는 폴더를 생성하고, 그 폴더에 my.cnf라는 폴더를 생성합니다 파일을 복사하고 다음 코드를 복사하세요. 🎜rrreee🎜위 코드는 MariaDB에 바인딩된 IP 주소를 0.0.0.0으로 지정하여 모든 IP 주소로부터의 연결을 허용합니다. 이는 데이터베이스의 접근성을 향상시킵니다. 🎜
      🎜컨테이너 실행🎜🎜🎜 터미널에서 docker-compose.yml이 있는 디렉터리로 이동하고 다음 명령을 실행하여 컨테이너를 시작합니다. 🎜rrreee 🎜이 명령은 webdb 서비스를 시작하는 컨테이너를 빌드합니다. -d 매개변수는 백그라운드에서 컨테이너를 실행하는 데 사용됩니다. 🎜🎜지금까지 우리는 Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 보안 강화를 성공적으로 구현했습니다. 컨테이너화된 프로그래밍 환경을 사용하면 애플리케이션과 데이터베이스를 쉽게 관리하고 보호할 수 있어 일정 수준의 보안을 제공할 수 있습니다. 🎜

위 내용은 Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 보안 강화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.