启用php的位置内Nginx重写规则

启用php的位置内Nginx重写规则,php,nginx,nginx-location,nginx-config,Php,Nginx,Nginx Location,Nginx Config,我需要在默认服务器配置中有一个php应用程序 此外,该应用程序以前是在apache服务器上分配的,在我翻译为nginx的.htaccess文件上有重写规则 我正试图这样配置它: server { listen [::]:443; server_name _; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html;

我需要在默认服务器配置中有一个php应用程序

此外,该应用程序以前是在apache服务器上分配的,在我翻译为nginx的
.htaccess
文件上有重写规则

我正试图这样配置它:

server {
        listen [::]:443;
        server_name _;

        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;

        location /admin {
                alias /var/www/sefoanco/html;
                index index.php index.html index.htm;

                try_files $uri $uri/ @admin;

                rewrite ^(/admin/.*)/login/ /login/controller.php break;
                rewrite ^(/admin/.*)/observacions/ /observacions/controller.php break;
                rewrite ^(/admin/.*)/usuari/ /usuari/controller.php break;
                rewrite ^(/admin/.*)/llistat/ /llistat/controller.php break;

                location ~ /admin/.+\.php$ {
                        include snippets/fastcgi-php.conf;

                        fastcgi_param SCRIPT_FILENAME $request_filename;    

                        fastcgi_split_path_info ^(.+\.php)(/.+)$;
                        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                        include fastcgi_params;
                }

            }

    location @admin {
        rewrite /admin/(.*)$ /admin/$1 last;
    }

}
如果我访问
localhost/admin/login
我会收到一个403禁止的错误

如果我将
controller.php
添加到索引文件中,它会正确响应php响应,因此我认为php配置良好


所以我想我忘记了一些需要配置的东西

最后,问题是应用程序不能在路径内工作。如果我看到应用程序配置,我会看到以下内容:

$\u DOCUMENT\u ROOT=$\u SERVER[“DOCUMENT\u ROOT”];
因此,很容易使其在路径上工作,但应用程序不使用相对路径,因此在
登录
中进行调用后,将在根路径中搜索auth方法

因此,需要重写应用程序的某些部分,然后才能在路径中工作

无论如何,我只需删除重写规则并在索引参数上添加
controller.php
,登录页面就可以正常工作。像这样的东西应该有用:

server {
        listen [::]:443 ;
        server_name _;

        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html controller.php;

        location /admin {
         try_files $uri $uri/ =404; 
    }

    location ~ \.php($|/) {
        include snippets/fastcgi-php.conf;

        fastcgi_param SCRIPT_FILENAME $request_filename;

        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        include fastcgi_params;
    }
}   

我认为
try\u文件
在这里乱糟糟的-不用它试试。重写规则似乎有些奇怪——我会像
rewrite^/admin/login/login/controller.php那样编写它
@IVOGELOV更改后,我得到一个
500内部服务器错误
,nginx错误日志显示:
*7“别名”不能在URI被重写的位置“/admin”中使用,客户端
好,然后离开
try_文件
并将重写规则移动到
@admin
部分现在@admin部分是
位置@admin{rewrite/admin/(.*)$/admin/$1 last;rewrite^/admin/login//login/controller.php break;[…]}
并且不使用
try_文件
但返回403禁止。在错误日志中:
禁止使用/var/www/sefoanco/html/login/”的目录索引
向索引添加
controller.php
有什么问题?