Ubuntu 上 symfony 的 Nginx 配置

Ubuntu 上 symfony 的 Nginx 配置

我想用 nginx 设置 symfony,这个配置运行正常

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 错误

更新

server {
    listen 80;
    root /src/web;
    client_max_body_size 30m;
    client_body_buffer_size 128k;

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

    location ~ \.php {
        root /src/web/;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        try_files $uri =404;
    }

}

答案1

由于某种原因,您的配置被设置为转发到 PHP仅有的请求到 app.php。

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

因为您想要所有 PHP 文件,所以您应该允许处理所有 PHP 文件。

    location ~ \.php {

当然,你还需要internal;按照注释的指示删除。这应该用 替换try_files $uri =404;。这是一个安全措施

相关内容