>  기사  >  백엔드 개발  >  루트 경로가 다른 두 하위 폴더의 콘텐츠를 제공하도록 Nginx를 구성하는 방법은 무엇입니까?

루트 경로가 다른 두 하위 폴더의 콘텐츠를 제공하도록 Nginx를 구성하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-23 00:52:12322검색

How to Configure Nginx to Serve Content from Two Subfolders with Different Root Paths?

하위 폴더에 대한 Nginx 위치 구성

이 기사에서는 두 개의 하위 폴더에서 콘텐츠를 제공하도록 Nginx를 구성하는 방법을 살펴보겠습니다. 루트 경로와 특정 URL의 다른 경로.

다음 디렉토리를 고려하세요. 구조:

/var/www/myside/
├── static
├── manage

우리의 목표는 루트 URL(예: http://example.org/)에서 /static 폴더에 액세스할 수 있게 하고 /manage(예: http)에서 /manage 폴더에 액세스할 수 있도록 만드는 것입니다. //example.org/manage). 이 경우 /manage 폴더에는 Slim의 PHP 프레임워크 코드가 포함되어 있으며 실제 PHP 파일은 /var/www/mysite/manage/public/index.php에 있습니다.

Nginx 구성

이를 달성하기 위해 Nginx의 위치 지시어를 사용할 수 있습니다. 가능한 구성은 다음과 같습니다.

server {
  listen 80;
  server_name example.org;
  error_log /usr/local/etc/nginx/logs/mysite/error.log;
  access_log /usr/local/etc/nginx/logs/mysite/access.log;
  root /var/www/mysite;

  location / {
    root /var/www/mysite/static;
    index index.html;
  }

  location /manage {
    alias /var/www/mysite/manage/public;
    index index.php;

    if (!-e $request_filename) {
      rewrite ^ /manage/index.php last;
    }

    location ~ \.php$ {
      if (!-f $request_filename) {
        return 404;
      }
      fastcgi_pass 127.0.0.1:9000;

      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $request_filename;
      fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
  }

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass 127.0.0.1:9000;

    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_index index.php;
  }
}

설명

구성을 분석해 보겠습니다.

  • 첫 번째 위치 블록(/ ): /static 폴더가 루트에서 제공되어야 함을 지정합니다. URI.
  • 두 번째 위치 블록(/manage): 별칭 지시어를 사용하여 /manage URI를 /var/www/mysite/manage/public 디렉터리에 매핑합니다.
  • 세 번째 위치 블록(/manage 내 위치 ~ .php$): /manage 내에서 PHP 파일 처리를 구성합니다. 폴더.
  • 최종 위치 블록(서버 수준에서 위치 ~ .php$): /static 폴더 내에서 PHP 파일 처리를 구성합니다.

별칭 대 루트 사용

별칭을 사용할 때 Nginx는 지정된 디렉터리의 파일을 제공하는 동안 원래 URI를 유지합니다. 이는 /manage URI가 /var/www/mysite/manage/public 디렉터리를 가리키도록 하기 때문에 우리의 목적에 유용합니다.

반대로, 루트는 위치 블록의 루트 디렉터리를 변경하므로 이는 다양한 위치의 다양한 하위 폴더를 제공하려는 시나리오에는 적합하지 않습니다.

다음에 대한 규칙 다시 작성 index.php

다시 쓰기 규칙은 /manage 폴더 내에 존재하지 않는 파일에 대한 요청이 index.php로 리디렉션되도록 합니다. 이를 통해 Slim의 PHP 애플리케이션이 요청을 처리할 수 있습니다.

PHP 파일 처리

PHP 파일 처리를 위한 두 위치 블록에는 FastCGI와 같은 PHP 스크립트를 실행하는 데 필요한 구성이 포함되어 있습니다. 설정과 변수. fastcgi_pass 지시문은 PHP 요청을 PHP FastCGI 서버로 보냅니다.

최종 참고 사항

PHP FastCGI 서버가 실행 중이고 올바르게 구성되었는지 확인하세요. 이 설정을 사용하면 /static 및 /manage 하위 폴더 모두에서 콘텐츠를 올바르게 제공할 수 있습니다.

위 내용은 루트 경로가 다른 두 하위 폴더의 콘텐츠를 제공하도록 Nginx를 구성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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