Ubuntu
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; } }
由於某種原因,您的配置設置為僅將 PHP請求轉發到 app.php。
location ~ ^/app\.php(/|$) {
由於您需要所有 PHP 文件,因此您應該只允許處理所有 PHP 文件。
location ~ \.php {
當然,您還需要
internal;
按照評論的指示刪除。這應該替換為try_files $uri =404;
. 這是一種安全措施。