Конфигурация Nginx для Symfony в Ubuntu - PullRequest
0 голосов
/ 25 октября 2018

Я хочу настроить Symfony с помощью nginx, и этот конфиг работает нормально

server {
    listen 80;
    root /src/web;

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

    location ~ ^/app\.php(/|$) {
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        # Prevents URIs that include the front controller. This will 404:
        # http://domain.tld/app.php/some-path
        # Remove the internal directive to allow URIs like this
        internal;
    }

    error_log /var/log/nginx/symfony_error.log;
    access_log /var/log/nginx/symfony_access.log;
}

Однако я также хочу, чтобы на моем сервере я также мог иметь доступ к файлам через app_dev.php и app_test.php какхорошо

пока с вышеупомянутым конфигом.http://127.0.0.1/api/check работает нормально

, но я также хочу, чтобы

http://127.0.0.1/app_dev.php/api/check и http://127.0.0.1/app_test.php/api/check также работали.

В настоящее время это выдает ошибку 404

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Для получения дополнительной информации вы можете использовать описание из symfony и nginx официальных документов.

Как видите, вы должны добавить несколько строк в файл conf nginx conf:

location ~ ^/(app_dev|config)\.php(/|$) {
    ...
}

Если вам также нужен app_test.php, его следует немного изменить.Просто включив имя файла:

location ~ ^/(app_dev|app_test)\.php(/|$) {
    ...
}

Но, пожалуйста, имейте в виду:

В производстве не включайте это и не развертывайте app_dev.php или app_test.php

Также было бы лучше иметь следующую конфигурацию до error_log ...:

location ~ \.php$ {
    return 404;
}
0 голосов
/ 25 октября 2018

Предполагая, что вы используете это для разработки, вы можете перечислить каждый файл (Среда) в capturing group () и отделить с помощью |, что в основном означает «или».

location ~ ^/(app|app_dev|app_test)\.php(/|$) {
    ....
}

Важно не использовать этот пример на рабочем сервере, так как он полностью небезопасен .

На рабочем сервере ваш текущий conf,правильно разрешить только app.php.

...