Работа с псевдонимом внутри локации

Так вот мой блок сервера

server {
    listen      80;
    server_name domain.tld;
    root        /var/www/domain.tld/html;
    index       index.php index.html index.htm;

    location / {
    }

    location /phpmyadmin {
        alias /var/www/phpmyadmin;
    }

    location /nginx_status {
        stub_status on;
        access_log  off;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

просмотрHttp: //domain.tld/index.php работает нормально, единственная проблема, с которой я сталкиваюсь - это просмотрHttp: //domain.tld/phpmyadmin/, Возвращает 404, но папка / var / www / phpmyadmin существует на сервере. Просматривая /var/log/nginx/error.log, там не регистрируется ошибка, но доступ к ней регистрируется в /var/log/nginx/access.log. В чем может быть проблема здесь?

Ответы на вопрос(1)

Решение Вопроса

location ~ \.php$ блок не указывает на правильный корень документа.

Вам нужно создать две локации PHP с разными корнями документов.

Если phpmyadmin находится в/var/www/phpmyadminВам не нужноalias директива, какroot Директива будет более эффективной. Увидетьэтот документ.

server {
    listen      80;
    server_name domain.tld;
    root        /var/www/domain.tld/html;
    index       index.php index.html index.htm;

    location / { 
    }

    location /nginx_status {
        stub_status on;
        access_log  off;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ^~ /phpmyadmin {
        root /var/www;

        location ~ \.php$ {
            try_files $uri =404;
            include fastcgi_params;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    }
}

location ^~ /phpmyadmin является префиксным местоположением, которое имеет приоритет над регулярным выражением, обычно используемым для обработки.php файлы. Он содержитlocation ~ \.php$ блок, который наследует значение/var/www для корня документа.

Желательноinclude fastcgi_params прежде чем определить другойfastcgi_param параметры в противном случае ваши пользовательские значения могут быть перезаписаны.

Увидетьэтот документ для большего.

 KeiKun02 июн. 2016 г., 06:33
Привет, что если я хочу phpmyadmin, расположенный в/var/www/phpmyadmin может быть доступен черезhttp://domain.tld/sql
 Richard Smith02 июн. 2016 г., 10:23
Вы можете добавить внутреннюю переписатьlocation /sql { rewrite ^/sql(.*)$ /phpmyadmin$1 last; } и сохранить вышеизложенное без изменений.

Ваш ответ на вопрос