Я хочу настроить местоположение для файла phpinfo.php
с помощью ] / phpinfo
и еще один для phpPgAdmin с / phppgadmin
.
Корневой каталог моего сервера находится в / usr / share / nginx / html /
, там я получил файл index.html
и phpinfo.php
, а также phpPgAdmin расположен по адресу / usr / share / phppgadmin
с его файлом index.php
внутри.
Это мой файл default.conf
:
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html index.htm index.php;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location /phpinfo {
index phpinfo.php;
}
location /phppgadmin {
alias /usr/share/phppgadmin;
}
}
Я установил блок местоположения для каждого, но ни один из них не работает.
В основном я хочу настроить все это для перехода к моей информации php с помощью http: // localhost / phpinfo
и к моему менеджеру баз данных phpPgAdmin с помощью http: // localhost / phppgadmin
.
Давайте сначала возьмем этот минимальный рабочий пример:
server {
listen 80;
server_name test.sc;
root /usr/share/nginx/html;
index index.html index.htm index.php;
location /phpinfo {
alias /usr/share/phppgadmin/;
index phpinfo.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Здесь проблема в том, что при использовании
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
FPM передается /usr/share/nginx/html/phpinfo.php для обработки, поскольку директива с «root» была определена / usr / share / nginx / html. Это будет сообщение «Входной файл не указан». ошибка.
Как вы могли это сделать:
server {
listen 80;
server_name test.sc;
root /usr/share/nginx/html;
index index.html index.htm index.php;
location /phpinfo {
alias /usr/share/phppgadmin/;
index phpinfo.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Таким образом, php-файлы в каталоге / usr / share / phppgadmin / будут обрабатываться отдельно, вы даже можете назначить для них другой пул FPM в контексте / usr / share / phppgadmin /. Все остальное будет обработано с использованием значений по умолчанию, указанных ниже. Nginx ограничен этим поведением, потому что будет использоваться первый блок соответствия регулярному выражению, он не будет продолжать попытки или использовать несколько блоков местоположения.
Теперь вы можете расширить конфигурацию по своему усмотрению:
server {
listen 80;
server_name test.sc;
root /usr/share/nginx/html;
index index.html index.htm index.php;
location /phpinfo {
alias /usr/share/phppgadmin/;
index phpinfo.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
location /phppgadmin {
alias /usr/share/phppgadmin;
index index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Кроме того, вы можете сократить эта конфигурация путем повторного использования определенных частей:
/ etc / nginx / php_settings:
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
/etc/nginx/sites-enabled/000.conf:
server {
listen 80;
server_name test.sc;
root /usr/share/nginx/html;
index index.html index.htm index.php;
location /phpinfo {
alias /usr/share/phppgadmin/;
index phpinfo.php;
include php_settings;
}
location /phppgadmin {
alias /usr/share/phppgadmin;
index index.php;
include php_settings;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}