보안을 향상하도록 docroot 수정

Apache 웹 서버가 있는 표준 설치에서 Adobe Commerce은 기본 웹 루트 /var/www/html/magento2에 설치됩니다.

magento2/ 디렉터리에는 다음 항목이 포함되어 있습니다.

  • pub/
  • setup/
  • var/

응용 프로그램이 /var/www/html/magento2/pub에서 제공됩니다. 나머지 파일 시스템은 브라우저에서 액세스할 수 있으므로 취약합니다.
webroot를 pub/ 디렉터리로 설정하면 사이트 방문자가 브라우저에서 파일 시스템의 중요한 영역에 액세스하지 못합니다.

이 항목에서는 보다 안전한 pub/ 디렉터리에서 파일을 제공하도록 기존 인스턴스의 Apache docroot를 변경하는 방법에 대해 설명합니다.

nginx에 대한 참고 사항

설치 디렉터리에 포함된 nginxnginx.conf.sample 파일을 사용하는 경우 pub/ 디렉터리에서 파일을 이미 제공하고 있을 수 있습니다.

사이트를 정의하는 서버 블록에서 사용하는 경우 nginx.conf.sample 구성은 서버의 docroot 설정을 재정의하여 pub/ 디렉터리의 파일을 제공합니다. 예를 들어 다음 구성의 마지막 줄을 참조하십시오.

# /etc/nginx/sites-available/magento

upstream fastcgi_backend {
   server  unix:/run/php/php7.4-fpm.sock;
}

server {

         listen 80;
         server_name 192.168.33.10;
         set $MAGE_ROOT /var/www/html/magento2ce;
         include /var/www/html/magento2ce/nginx.conf.sample;
}

시작하기 전에

이 자습서를 완료하려면 LAMP 스택에서 실행되는 작업 설치에 액세스해야 합니다.

  • 리눅스
  • Apache (2.4+)
  • MySQL(5.7+)
  • PHP (7.4)
  • Elasticsearch(7.x) 또는 OpenSearch(1.2)
  • Adobe Commerce (2.4+)
NOTE
자세한 내용은 필수 구성 요소설치 안내서를 참조하십시오.

1. 서버 구성 편집

가상 호스트 파일의 이름과 위치는 실행 중인 Apache 버전에 따라 다릅니다. 이 예는 Apache v2.4에서 가상 호스트 파일의 이름과 위치를 보여 줍니다.

  1. 애플리케이션 서버에 로그인합니다.

  2. 가상 호스트 파일 편집:

    code language-bash
    vim /etc/apache2/sites-available/000-default.conf
    
  3. pub/ 디렉터리의 경로를 DocumentRoot 지시문에 추가합니다.

    code language-conf
    <VirtualHost *:80>
    
             ServerAdmin webmaster@localhost
             DocumentRoot /var/www/html/magento2ce/pub
    
             ErrorLog ${APACHE_LOG_DIR}/error.log
             CustomLog ${APACHE_LOG_DIR}/access.log combined
    
             <Directory "/var/www/html">
                         AllowOverride all
             </Directory>
     </VirtualHost>
    
  4. Apache 다시 시작:

    code language-bash
    systemctl restart apache2
    

2. 기본 URL 업데이트

응용 프로그램을 설치할 때 기본 URL을 만들기 위해 서버의 호스트 이름 또는 IP 주소에 디렉터리 이름을 추가한 경우(예: http://192.168.33.10/magento2) 이를 제거해야 합니다.

NOTE
192.168.33.10을(를) 서버의 호스트 이름으로 바꾸십시오.
  1. 데이터베이스에 로그인:

    code language-bash
    mysql -u <user> -p
    
  2. 응용 프로그램을 설치할 때 만든 데이터베이스를 지정합니다.

    code language-shell
    use <database-name>
    
  3. 기본 URL 업데이트:

    code language-shell
    UPDATE core_config_data SET value='http://192.168.33.10' WHERE path='web/unsecure/base_url';
    

3. env.php 파일 업데이트

env.php 파일에 다음 노드를 추가합니다.

'directories' => [
    'document_root_is_pub' => true
]

자세한 내용은 env.php 참조를 참조하십시오.

4. 모드 전환

productiondeveloper을(를) 포함하는 응용 프로그램 모드은(는) 보안을 강화하고 개발을 더 쉽게 하도록 설계되었습니다. 이름을 통해 알 수 있듯이 응용 프로그램을 확장하거나 사용자 지정할 때는 developer 모드로 전환하고, 라이브 환경에서 실행할 때는 production 모드로 전환해야 합니다.

모드 간 전환은 서버 구성이 제대로 작동하는지 확인하는 중요한 단계입니다. CLI 도구를 사용하여 모드 간에 전환할 수 있습니다.

  1. 설치 디렉토리로 이동합니다.

  2. production 모드로 전환합니다.

    code language-bash
    bin/magento deploy:mode:set production
    
    code language-bash
    bin/magento cache:flush
    
  3. 브라우저를 새로 고치고 상점 전면이 제대로 표시되는지 확인하십시오.

  4. developer 모드로 전환합니다.

    code language-bash
    bin/magento deploy:mode:set developer
    
    code language-bash
    bin/magento cache:flush
    
  5. 브라우저를 새로 고치고 상점 전면이 제대로 표시되는지 확인하십시오.

5. 상점 첫 화면 확인

웹 브라우저의 상점 앞으로 이동하여 모든 것이 제대로 작동하는지 확인하십시오.

  1. 웹 브라우저를 열고 주소 표시줄에 서버의 호스트 이름 또는 IP 주소를 입력합니다. 예: http://192.168.33.10.

    다음 그림은 샘플 상점 첫 페이지를 보여줍니다. 다음과 같이 표시된다면 설치가 성공적으로 완료되었습니다.

    설치를 확인하는 Storefront

    페이지에 404(찾을 수 없음)가 표시되거나 이미지, CSS 및 JS와 같은 다른 자산을 로드하지 못하는 경우 문제 해결 섹션을 참조하세요.

  2. 브라우저에서 응용 프로그램 디렉터리에 액세스해 보십시오. 주소 표시줄에서 서버의 호스트 이름 또는 IP 주소에 디렉터리 이름을 추가합니다.

    404 또는 "액세스 거부" 메시지가 표시되면 파일 시스템에 대한 액세스를 제한한 것입니다.

    액세스 거부됨

recommendation-more-help
0f8e7db5-0e9c-4002-a5b8-a0088077d995