Laravel не читает файлы css и js (nginx) - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь создать приложение, используя laravel 7 и nginx на Docker для Windows.

Мне удалось показать верхнюю страницу на laravel в публикации c папка, но она никогда не читает файлы css и js в папке publi c и показывает 404 ошибки. Страница ошибки 404 иногда является страницей nginx, а иногда и laravel. (Код, который я покажу вам ниже, показывает код laravel)

Я подозревал, что эта проблема связана с моей конфигурацией nginx, и пробовал много вещей, но ничего не работает.

Вот моя структура каталогов laravel.

blog
-public
--index.php
--css
---index.css
--js
---jquery-3.4.1.min.js

Вот моя nginx .conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$uri - $is_args - args :::'
                      '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

Вот мой default.conf. Закомментированные коды - это то, что я пробовал.

server {
    index index.php index.html;
    server_name localhost;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/html/blog/public;

    location / {
        index  index.php index.html index.htm;
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    #location ~ \.(css|js)$ {
    #    root /var/www/html/blog/public;
    #    try_files $uri $uri/ =404;
    #}
    #location /css/ {
    #    alias /var/www/html/blog/public/css/;
    #}
    #location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
    #    root   /var/www/html/laravel/public;
    #    expires max;
    #    add_header Cache-Control public;
    #    access_log off;
    #}
    #location ~ \.css {
     #   add_header  Content-Type    text/css;
    #}
    #location ~ \.js {
    #    add_header  Content-Type    application/x-javascript;
    #}

}

Я застрял на этой проблеме два дня, поэтому любые предложения полезны.

Редактировать :

Это то, что access.log говорит:

172.24.0.1 - - [31/Mar/2020:10:36:09 +0000] "GET /index.php HTTP/1.1" 200 443 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
172.24.0.1 - - [31/Mar/2020:10:36:10 +0000] "GET /js/jquery-3.4.1.min.js HTTP/1.1" 404 1564 "http://localhost/index.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
172.24.0.1 - - [31/Mar/2020:10:36:10 +0000] "GET /css/index.css HTTP/1.1" 404 1564 "http://localhost/index.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"

error.log говорит nothng.

20200401

Я изменил root файла default.conf на / var / www/html и изменил структуру каталогов, чтобы выяснить, является ли эта проблема проблемой laravel или нет. Следующие файлы работают как сырое php приложение. Индекс. php пытается прочитать индекс. css.

html
-index.php
-css
--index.css

Он читает индекс. css, но не меняет стиль. Я написал те же css в качестве индекса. css в теге индекса. php, чтобы убедиться, что синтаксис правильный, и он правильно изменил стиль. Более того, он показал следующую ошибку на Chrome:

Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost/index.css".

index. css выглядит так в моем редакторе:

h1{
    text-align: center;
}

, но в браузере index. css совпадает с индексом. php:

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8" />
    <title>Sapphire test</title>
    <link rel="stylesheet"  href="css/test.css">

</head>
<!--<style>-->
<!--    h1{-->
<!--        text-align: center;-->
<!--    }-->
<!--</style>-->
<body>
<header>
    <h1>Sapphire test</h1>
</header>
<main>
    <p>Hello World</p>
</main>
<script>
</script>
<footer>

</footer>
</body>
</html>

это так запутанно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...