Как в связке nginx - Symfony прописать символьную ссылку на phpmyadmin чтобы Symfony ее не обрабатывала?

Подскажите как правильно прописывать ссылки на сервере если после установки симфони у нее путь

root  /var/www/html/symfony5/

Но при этом на главной странице сайта открывается папка

root  /var/www/html/symfony5/public/

Ставлю PhpMyAdmin. Он по идее ставится по пути

/usr/share/phpmyadmin

Как мне теперь сделать чтобы его index.php открывался по ccылке site.com/phpmyadmin?

Во всех примерах есть установка символьной ссылки:

sudo ln -s /usr/share/phpmyadmin /usr/share/nginx/html

Но так не работает. Ни так:

sudo ln -s /usr/share/phpmyadmin /usr/share/nginx/html/symfony5

Как запустить файлы phpadmina? Или как например я могу настроить несколько разных проектов site.com/1, site.com/2 и т.д. чтобы Symfony не думала что это ее роуты?


Ответы (2 шт):

Автор решения: Aleksey Vaganov

Если phpMyadmin лежит в папке /usr/share/phpmyadmin и вы хотите чтобы он открывался по URL /phpmyadmin, то вы должны создать в конфиге nginx для соответствующего блока server такой location

location = /phpmyadmin {
    root /usr/share/phpmyadmin;
    index index.php;
    .... далее fastcgi_pass на php ....
}

И обечпечить чтобы у пользователей, под которыми работают сервисы nginx и php, был доступ к скриптам в папке /usr/share/phpmyadmin

→ Ссылка
Автор решения: Максим

Проблема решилась тем что по удалял все лишние конфиги, оставил только официальный конфиг Symfony 5 (в котором убрал фразу internal; и поправил на такой location ~* .php(/|$) {). Потом все заработало. Но все таки создал на поддомене PhpMyAdmin. Для этого у регистратора делаем новый поддомен, на сервер по пути "/etc/nginx/sites-enabled" добавляем конфиг имя поддомена.conf с содержимым (меняются данные на ваш поддомен)

server {
 listen 80;
 listen [::]:80;
 server_name xx.xxx.ua www.xx.xxx.ua;

 root  /usr/share/phpmyadmin;
 index index.html index.php;

 client_max_body_size 100M;

 location = /favicon.ico {
     log_not_found off;
     access_log off;
 }


# optionally disable falling back to PHP script for the asset directories;
# nginx will return a 404 error when files are not found instead of passing the
# request to Symfony (improves performance but Symfony's 404 page is not displayed)
# location /bundles {
#     try_files $uri =404;
# }

location ~* \.php(/|$) {
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    fastcgi_buffer_size 32k;
    fastcgi_buffers 4 32k;
    include fastcgi_params;

    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    fastcgi_param DOCUMENT_ROOT $realpath_root;
}

# return 404 for all other php files not matching the front controller
# this prevents access to other php files you don't want to be accessible.
location ~ \.php$ {
    return 404;
}

location / {
    # try to serve file directly, fallback to index.php
    try_files $uri /index.php$is_args$args;
}

error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;}

Потом PhpMyAdmin откроется по ссылке вашего поддомена.

→ Ссылка