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

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

Oct 12, 2023 pm 02:21 PM
nginx mariadb docker compose

通过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으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Tomcat 서버에 대한 외부 네트워크 액세스를 허용하는 방법 Tomcat 서버에 대한 외부 네트워크 액세스를 허용하는 방법 Apr 21, 2024 am 07:22 AM

Tomcat 서버에 대한 외부 네트워크 액세스를 허용하는 방법

nginx 시작 및 중지 명령은 무엇입니까? nginx 시작 및 중지 명령은 무엇입니까? Apr 02, 2024 pm 08:45 PM

nginx 시작 및 중지 명령은 무엇입니까?

thinkphp를 실행하는 방법 thinkphp를 실행하는 방법 Apr 09, 2024 pm 05:39 PM

thinkphp를 실행하는 방법

nginx에 오신 것을 환영합니다! 어떻게 해결하나요? nginx에 오신 것을 환영합니다! 어떻게 해결하나요? Apr 17, 2024 am 05:12 AM

nginx에 오신 것을 환영합니다! 어떻게 해결하나요?

phpmyadmin을 등록하는 방법 phpmyadmin을 등록하는 방법 Apr 07, 2024 pm 02:45 PM

phpmyadmin을 등록하는 방법

nodejs 프로젝트를 서버에 배포하는 방법 nodejs 프로젝트를 서버에 배포하는 방법 Apr 21, 2024 am 04:40 AM

nodejs 프로젝트를 서버에 배포하는 방법

웹사이트에 접속할 때 nginx 문제를 해결하는 방법 웹사이트에 접속할 때 nginx 문제를 해결하는 방법 Apr 02, 2024 pm 08:39 PM

웹사이트에 접속할 때 nginx 문제를 해결하는 방법

도커 컨테이너 간 통신 방법 도커 컨테이너 간 통신 방법 Apr 07, 2024 pm 06:24 PM

도커 컨테이너 간 통신 방법

See all articles