Nginx 1.14 и php7.2-fpm возвращают php в виде application / octet-stream для загрузки - PullRequest
0 голосов
/ 03 июня 2018

Я получил чистую только что установленную Ubuntu 18.04 на Windows 10 WSL, вот что я с ней сделал:

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 каталога.

Итак ... я получил проект SPA на Laravel 5.6 иVue.js, который работал правильно на Nginx 1.10 и php7.0-fpm, который возвращает мне страницу на / и работает также с маршрутами Vue, но если я пытаюсь получить /login или какой-либо API-маршрут (или любой другойurl) из браузера он дает мне application/octet-stream из public/index.php для загрузки.Я пытался добавить тип php mime в конфиги nginx и изменить default_type application/octet-stream; в nginx.conf на default_type text/html;, как я читал в некоторых советах, но это не сработало.Мне уже передумали, помогите, пожалуйста!

1 Ответ

0 голосов
/ 27 марта 2019

Это, вероятно, связано с поддержкой HTTP / 2 этой версии Nginx.

HTTP / 2 всегда должен использоваться по SSL.

Обработка HTTP / 1 и HTTP / 2 поПрозрачно SSL / ClearTCP на самом деле очень сложно и плохо обрабатывается Nginx.

Попробуйте удалить любой сайт, использующий http2, с сайтов с поддержкой Nginx, перезапустите Nginx.Вы также можете попытаться сделать запрос в HTTPS, ваши страницы должны обслуживаться без проблем.

Переходите на HTTP / 2 только по SSL или на данный момент забудьте о HTTP / 2.

...