我想用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错误
答案 0 :(得分:1)
假设您将其用于开发,则可以在capturing group
()
中列出每个文件(环境),并用{{1}分隔},其基本含义是“或”。
|
重要的是不要在生产服务器上使用此示例,因为它完全不安全。
在生产服务器上,您当前的location ~ ^/(app|app_dev|app_test)\.php(/|$) {
....
}
仅允许conf
是正确的。
答案 1 :(得分:0)
有关更多信息,您可以使用symfony和nginx官方文档中的描述。
如您所见,您应该在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;
}