【问题标题】:Nginx try_files prompt for download PHPNginx try_files 提示下载 PHP
【发布时间】:2021-02-27 06:20:18
【问题描述】:

我正在 AWS Linux 2 上设置 Nginx + PHP Web 服务器。它是全新安装的,安装了 nginx 和 PHP7.4。下面是nginx中的虚拟主机配置文件。

我需要将所有流量重定向到 index.php,因为它是一个单页应用程序。

当我转到 www.xxx.com/index.php 时,PHP 页面呈现正常(因此 PHP 肯定在运行)。

当我转到www.xxx.com/login/时,浏览器提示下载index.php文件而不是执行它。

有人可以帮忙吗? (我已尝试清除浏览器缓存)。

/etc/nginx/conf.d/myapp.conf

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/vhosts/app.userback.io/frontend/;
    index index.php index.html index.htm;

    server_name www.myapp.com;

    location / {
        try_files $uri $uri/ /index.php =404;
    }

    location ~ \.php$ {
        try_files $uri =404;

        fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;
        fastcgi_intercept_errors on;
        fastcgi_index  index.php;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        fastcgi_pass   php-fpm;
    }
}

【问题讨论】:

    标签: php linux nginx amazon-ec2 amazon-linux-2


    【解决方案1】:

    你可以试试:

    location ~ \.php$ {
        try_files $uri /404.html;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;// change it if not valid
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    } 
    

    【讨论】:

    • 我试过你的。它仍然提示下载 PHP 文件而不是执行它。当我直接转到 PHP 文件时,它执行得很好。仅当 try_files 尝试使用 index.php 提供流量时才会下载。
    • 你试试:try_files $uri $uri/ /index.php?$args;
    • 谢谢,我试过了。它没有用。它不再提示下载,因为它不再重定向到 index.php。 :(
    • nginx的返回码是什么? 404、403 .. 200 还是 50 倍?
    • 这是一个很好的 200 代码。但内容类型是应用程序/八位字节流。它设法“重定向”或使用 index.php 将流量发送到 /login/ ,因为 /login/ 不是一个存在的文件。但它应该在服务器上执行 index.php 而不是将其作为文件重新调整以供下载。希望这是有道理的。顺便说一句,PHP 肯定已经安装并运行,因为我们直接去 index.php,它工作正常。
    【解决方案2】:

    我在这里找到了答案:NGINX try_files does not pass to PHP

    事实证明这是位置的顺序加上删除 404 以使重定向成为内部。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      相关资源
      最近更新 更多