Ubuntu

ubuntu 上 symfony 的 Nginx 配置

  • October 26, 2018

我想用 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/checkhttp://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;
   }

}

由於某種原因,您的配置設置為將 PHP請求轉發到 app.php。

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

由於您需要所有 PHP 文件,因此您應該只允許處理所有 PHP 文件。

   location ~ \.php {

當然,您還需要internal;按照評論的指示刪除。這應該替換為try_files $uri =404;. 這是一種安全措施

引用自:https://serverfault.com/questions/937084