Nginx 1.14和php7.2-fpm将php作为application / octet-stream返回下载

时间:2018-06-03 07:53:09

标签: nginx windows-subsystem-for-linux php-7.2

我刚刚在Windows 10 WSL上安装了Ubuntu 18.04,这就是我用它做的:

sudo add-apt-repository ppa:nginx/stable
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install composer npm
sudo apt install nginx postgresql-10
sudo apt install php7.2 php7.2-cli php7.2-fpm php7.2-curl php7.2-gd php7.2-mysql php7.2-mbstring
sudo apt upgrade

我的项目的nginx配置:

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

    listen 443 ssl;
    listen [::]:443 ssl;

    root /var/www/domains/laravel/public;

    index index.php index.html index.htm;

    server_name laravel.loc;

    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        #fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_pass 127.0.0.1:9000;
    }

    location ~ /\.ht {
        deny all;
    }
}

nginx.conf除了user user;

之外没有任何变化
user = user
group = user
listen = 127.0.0.1:9000

位于www.conf php7.2-fpm's目录的pool.d

所以...我在Laravel 5.6Vue.js上获得了SPA项目,该项目在Nginx 1.10php7.0-fpm上正常运行,该项目会在/上返回页面也可以使用Vue路线,但如果我试图从浏览器获取/login或某个api路线(或任何其他网址),则会application/octet-stream public/index.php下载default_type application/octet-stream; 。我已经尝试将php mime类型添加到nginx配置中,并将nginx.conf中的default_type text/html;更改为DispatcherTimer,因为我在一些建议中读到了,但它确实做了这个伎俩。已经打破了我的想法,任何人都请帮忙!

1 个答案:

答案 0 :(得分:0)

这可能与该版本Nginx的HTTP / 2支持有关。

HTTP / 2应该始终通过SSL使用。

通过SSL / ClearTCP透明地处理HTTP / 1和HTTP / 2实际上非常困难,Nginx不能很好地处理。

尝试从启用Nginx的站点中使用http2删除任何站点,然后重新启动Nginx。 您也可以尝试通过HTTPS发出请求,页面的投放应该没有问题。

仅通过SSL移至HTTP / 2,或暂时忽略HTTP / 2。