누군가가에 액세스 할 때 /phpmyadmin/
nginx가 /home/phpmyadmin/
일반적인 문서 루트가 아닌 별칭 을 가져 오도록 별칭을 설정하려고 합니다. 그러나 URL을 가져올 때마다 fastcgi를 통해 가져 오지 않은 모든 항목에 대해 404가 표시됩니다. fastcgi는 잘 작동하는 반면 나머지는 그렇지 않습니다. strace
일반적인 문서 루트에서 다른 모든 것을 가져 오려고한다고 말하지만 이유를 알 수는 없습니다. 누구나 통찰력을 제공 할 수 있습니까?
내 구성의 관련 부분은 다음과 같습니다.
location ~ ^/phpmyadmin/(.+\.php)$
{
include fcgi.conf;
fastcgi_index index.php;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME /home$fastcgi_script_name;
}
location /phpmyadmin
{
alias /home/phpmyadmin/;
}
답변
방법을 알아 냈습니다. 그것이 최선인지 확실하지 않지만 지금 당장 작동하고 있습니다.
내가 한 일은 다음과 같습니다.
location ~ ^/phpmyadmin/(.*)$
{
alias /home/phpmyadmin/$1;
}
답변
잘 모르겠지만 다음과 같이 작성해 보았습니다.
location /phpmyadmin/
{
alias /home/phpmyadmin/;
}
또한 액세스하려는 URI는 무엇입니까?
내가 이해하는 한 URI를 사용해야합니다.
/home/phpmyadmin/
뿐만 아니라
/phpmyadmin/
자세한 내용은 여기 ( http://wiki.nginx.org/HttpCoreModule)를 참조 하십시오.
답변
시험
location ^~ /phpMyAdmin/
{
alias /home/phpmyadmin/;
location ~ \.php$
{
include fcgi.conf;
fastcgi_index index.php;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME /home$fastcgi_script_name;
}
}
답변
이것이 작동하지 않는 이유는 서버가 별칭이있는 접두사 기반 위치가 아닌 정규식 기반 위치를 선택하기 때문입니다.
하나만 선택합니다. 접두사 기반 위치를 가져 와서 정규 표현식을 능가하는 데 사용할 수있는 연산자가 있지만 PHP가 작동하지 않습니다. 해결책은 kervin의 대답과 같으며 PHP 정규 표현식이 별칭 지시문으로 위치 안에 중첩됩니다.
그러나 URL과 별칭 디렉토리에 대문자가 다르기 때문에 그의 SCRIPT_FILENAME 설정이 작동하지 않을 수 있습니다.