Docker Compose, Nginx, MariaDB를 사용하여 PHP 애플리케이션의 보안 강화 구현
네트워크 공격 및 데이터 유출이 빈번하게 발생하면서 애플리케이션과 데이터베이스의 보안을 보호하는 것이 점점 더 중요해지고 있습니다. PHP 애플리케이션에서 Docker Compose를 사용하면 Nginx 및 MariaDB는 보안 강화를 달성하고 특정 보안 보호 조치를 제공할 수 있습니다. 이 문서에서는 보안 강화를 위해 이러한 도구를 사용하는 방법을 설명하고 몇 가지 코드 예제를 제공합니다.
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
上述代码定义了两个服务: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
rrreee
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 프로세스에 전달하는 데 사용됩니다. 🎜docker-compose.yml
이 있는 디렉토리에 db
라는 폴더를 생성하고, 그 폴더에 my.cnf라는 폴더를 생성합니다
파일을 복사하고 다음 코드를 복사하세요. 🎜rrreee🎜위 코드는 MariaDB에 바인딩된 IP 주소를 0.0.0.0
으로 지정하여 모든 IP 주소로부터의 연결을 허용합니다. 이는 데이터베이스의 접근성을 향상시킵니다. 🎜docker-compose.yml
이 있는 디렉터리로 이동하고 다음 명령을 실행하여 컨테이너를 시작합니다. 🎜rrreee 🎜이 명령은 web
및 db
서비스를 시작하는 컨테이너를 빌드합니다. -d
매개변수는 백그라운드에서 컨테이너를 실행하는 데 사용됩니다. 🎜🎜지금까지 우리는 Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 보안 강화를 성공적으로 구현했습니다. 컨테이너화된 프로그래밍 환경을 사용하면 애플리케이션과 데이터베이스를 쉽게 관리하고 보호할 수 있어 일정 수준의 보안을 제공할 수 있습니다. 🎜위 내용은 Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 보안 강화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!