>  기사  >  백엔드 개발  >  Docker Compose, Nginx 및 MariaDB를 사용한 PHP 애플리케이션의 보안 암호화

Docker Compose, Nginx 및 MariaDB를 사용한 PHP 애플리케이션의 보안 암호화

WBOY
WBOY원래의
2023-10-12 14:21:11965검색

通过Docker Compose、Nginx和MariaDB实现PHP应用程序的安全加密

Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션을 안전하게 암호화합니다.

오늘날 디지털 시대에 데이터 보안은 매우 중요한 문제입니다. 많은 애플리케이션에서 사용자 데이터와 민감한 정보 보호는 무시할 수 없습니다. 이 기사에서는 Docker Compose, Nginx 및 MariaDB를 사용하여 PHP 애플리케이션의 보안 암호화를 구현하는 방법을 소개합니다. 동시에 독자의 이해를 돕기 위해 몇 가지 구체적인 코드 예제도 제공할 것입니다.

먼저 Docker Compose의 기본 개념을 이해해야 합니다. Docker Compose는 YAML 파일을 사용하여 여러 Docker 컨테이너를 정의하고 관리하는 데 도움이 되는 Docker용 도구입니다. Docker Compose를 사용하면 여러 컨테이너를 쉽게 만들고 관리하여 완전한 애플리케이션을 구축할 수 있습니다.

이 예에서는 Docker Compose를 사용하여 Nginx, PHP 및 MariaDB라는 세 가지 컨테이너를 만듭니다. Nginx는 HTTP 요청을 처리하고 이를 올바른 컨테이너로 전달할 수 있는 강력한 웹 서버이자 역방향 프록시 서버입니다. PHP 컨테이너는 PHP 애플리케이션을 실행하는 데 사용됩니다. MariaDB는 데이터베이스를 저장하고 관리하는 데 사용됩니다.

먼저 Docker Compose YAML 파일을 생성해야 합니다. 이 예에서는 docker-compose.yml이라고 부릅니다. 다음은 간단한 예입니다. docker-compose.yml。以下是一个简单的示例:

version: '3'
services:
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - php
  php:
    image: php:7.4-fpm
    volumes:
      - ./php/www:/var/www/html
    depends_on:
      - db
  db:
    image: mariadb:latest
    environment:
      - MYSQL_ROOT_PASSWORD=mysecretpassword
    volumes:
      - db_data:/var/lib/mysql
volumes:
  db_data: {}

在这个例子中,我们定义了三个服务:nginx、php和db。nginx服务使用了最新的Nginx镜像,并将容器的80端口映射到主机的80端口。同时,我们将./nginx/conf.d目录挂载到/etc/nginx/conf.d目录,这样我们就可以轻松地配置Nginx服务器。php服务使用了PHP 7.4-fpm镜像,并将./php/www目录挂载到/var/www/html目录。最后,db服务使用了最新的MariaDB镜像,并且通过MYSQL_ROOT_PASSWORD环境变量设置了Root密码。同时,我们使用了一个卷db_data来持久化存储数据库。

接下来,我们需要为我们的PHP应用程序创建一个Nginx配置文件。在./nginx/conf.d目录下创建一个名为myapp.conf的文件,并添加以下内容:

server {
    listen 80;
    server_name myapp.com;
    root /var/www/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ .php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

在这个配置文件中,我们定义了一个名为myapp.com的虚拟主机,将80端口与我们的PHP应用程序关联起来。同时,我们将/var/www/html目录设置为根目录,并将index.php文件设为默认索引文件。在location /部分,我们定义了当请求的文件不存在时,将请求转发到index.php文件。location ~ .php$部分是用来处理.php文件的请求,并将其转发到PHP容器的9000端口。

最后,我们需要为我们的PHP应用程序创建一个index.php文件,并将其保存在./php/www目录下:

<?php
echo "Hello, World!";
?>

这个示例非常简单,它只是输出了"Hello, World!"。你可以根据自己的需求来编写更复杂的PHP应用程序。

现在,我们可以通过运行以下命令来启动我们的应用程序:

docker-compose up -d

在启动完成后,你可以通过打开浏览器并访问http://localhostrrreee

이 예에서는 nginx, php 및 db의 세 가지 서비스를 정의합니다. nginx 서비스는 최신 Nginx 이미지를 사용하고 컨테이너의 포트 80을 호스트의 포트 80에 매핑합니다. 동시에 Nginx 서버를 쉽게 구성할 수 있도록 ./nginx/conf.d 디렉터리를 /etc/nginx/conf.d 디렉터리에 마운트합니다. . php 서비스는 PHP 7.4-fpm 이미지를 사용하고 ./php/www 디렉토리를 /var/www/html 디렉토리에 마운트합니다. 마지막으로 db 서비스는 최신 MariaDB 이미지를 사용하며 루트 비밀번호는 MYSQL_ROOT_PASSWORD 환경 변수를 통해 설정됩니다. 동시에 db_data 볼륨을 사용하여 데이터베이스를 유지합니다.

다음으로 PHP 애플리케이션용 Nginx 구성 파일을 생성해야 합니다. ./nginx/conf.d 디렉토리에 myapp.conf라는 파일을 생성하고 다음 콘텐츠를 추가합니다.

rrreee

이 구성 파일에서 가상 생성 생성을 정의합니다. myapp.com이라는 호스트를 사용하고 포트 80을 PHP 애플리케이션과 연결합니다. 동시에 /var/www/html 디렉토리를 루트 디렉토리로 설정하고 index.php 파일을 기본 인덱스 파일로 설정했습니다. location / 섹션에서는 요청한 파일이 존재하지 않을 때 요청이 index.php 파일로 전달되도록 정의합니다. location ~ .php$ 부분은 .php 파일에 대한 요청을 처리하고 이를 PHP 컨테이너의 포트 9000으로 전달하는 데 사용됩니다.

마지막으로 PHP 애플리케이션용 index.php 파일을 생성하고 ./php/www 디렉터리에 저장해야 합니다. 🎜rrreee🎜예제는 다음과 같습니다. 매우 간단합니다. "Hello, World!"만 출력합니다. 필요에 따라 더 복잡한 PHP 애플리케이션을 작성할 수 있습니다. 🎜🎜이제 다음 명령을 실행하여 애플리케이션을 시작할 수 있습니다. 🎜rrreee🎜시작이 완료된 후 브라우저를 열고 http://localhost 프로그램을 방문하여 애플리케이션을 볼 수 있습니다. "Hello, World!"가 화면에 인쇄되는 것을 볼 수 있습니다. 🎜🎜Docker Compose, Nginx 및 MariaDB를 사용하여 안전하고 암호화된 PHP 애플리케이션을 성공적으로 만들었습니다. Nginx는 역방향 프록시 서버 역할을 하며 HTTP 요청을 처리하고 이를 올바른 컨테이너로 전달할 수 있습니다. PHP 컨테이너는 애플리케이션의 실행 환경이며 Nginx 컨테이너와 통신할 수 있습니다. MariaDB는 데이터베이스를 저장하고 관리하는 데 사용됩니다. 🎜🎜실제 적용에서는 SSL 인증서를 사용하여 데이터 보안을 더욱 강화할 수 있습니다. 모든 HTTP 요청이 암호화되도록 Nginx 컨테이너에 SSL 인증서를 구성할 수 있습니다. 동시에 액세스 제어 및 암호화된 저장소와 같은 MariaDB의 보안 메커니즘을 사용하여 데이터베이스의 데이터를 보호할 수도 있습니다. 🎜🎜요컨대 Docker Compose, Nginx 및 MariaDB를 사용하면 안전하고 암호화된 PHP 애플리케이션을 쉽게 만들고 관리할 수 있습니다. 이러한 도구와 기술을 사용하면 사용자 데이터와 민감한 정보의 보안을 더욱 효과적으로 보호할 수 있습니다. 이 기사가 독자들에게 도움이 되고 귀하의 애플리케이션에 대한 실용적인 참고 자료가 되기를 바랍니다. 🎜

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

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