별칭 디렉토리에서 PHP에 액세스할 때 nginx에서 404를 제공합니다.

별칭 디렉토리에서 PHP에 액세스할 때 nginx에서 404를 제공합니다.

Apache에서 nginx로 마이그레이션하려고 합니다. 내가 호스팅하고 있는 PHP 사이트는 별칭 디렉터리인 공유 라이브러리에 액세스해야 합니다. 아래는 제가 생각해낸 구성입니다. html 파일은 잘 작동하지만 php 파일은 404를 제공합니다. 유사한 질문에 대한 대부분의 답변을 읽고 시도했지만 성공하지 못했습니다. 내 경우에 문제의 원인이 무엇인지에 대한 힌트가 있습니까?

location /wtlib/ {
    alias /var/www/shared/wtlib_4/;
    index index.php;
}

location ~ /wtlib/.*\.php$ {
    alias /var/www/shared/wtlib_4/;
    try_files $uri =404;
    if ($fastcgi_script_name ~ /wtlib(/.*\.php)$) {
        set $valid_fastcgi_script_name $1;
    }
    fastcgi_pass 127.0.0.1:9013;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /var/www/shared/wtlib_4$valid_fastcgi_script_name;
    fastcgi_param REDIRECT_STATUS 200;
    include /etc/nginx/fastcgi_params;
}

모두 감사합니다!

업데이트: 다음은 제대로 작동하는 것 같습니다.

location /wtlib/ {
    alias /usr/share/php/wtlib_4/;
    location ~* .*\.php$ {
      try_files $uri @php_wtlib;
    }

    location ~* \.(html|htm|js|css|png|jpg|jpeg|gif|ico|pdf|zip|rar|air)$ {
      expires 7d;
      access_log off;
    }
}

location @php_wtlib {
    if ($fastcgi_script_name ~ /wtlib(/.*\.php)$) {
        set $valid_fastcgi_script_name $1;
    }
    fastcgi_pass $byr_pass;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /usr/share/php/wtlib_4$valid_fastcgi_script_name;
    fastcgi_param REDIRECT_STATUS 200;
    include /etc/nginx/fastcgi_params;
}

답변1

귀하의 라인이 try_files $uri =404;이유이지만 구성을 개선할 수 있습니다.

server {
  # other code ...
  index index.php;
  location /wtlib/ {
    alias /var/www/shared/wtlib_4/;
    location ~* .*\php$ {
      try_files $uri @php;
    }
  }
  location @php {
    fastcgi_pass 127.0.0.1:9013;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param REDIRECT_STATUS 200;
    include /etc/nginx/fastcgi_params;
  }
}

관련 정보