0

私の問題は、Nginxサーバー(Ubuntu)上でLaravel 5.4を使用してCSSファイルとJSファイルを提供しています。私はネストされたサブディレクトリ(Webサーバーのルートにない)からアプリケーションを提供するようにサーバーを構成しました。ルーティングは機能しています。参照:Laravel 5.4サブディレクトリNginxで提供されます。 404とjsファイルを含む場合

問題は、私はJSファイル(そしておそらくCSS)を含めることができないということです。 JSファイルは "blog/public/js/posts.js"にあります。

私のサイトの構成と、ブレードファイルにJSファイルを含めるコードを以下に添付します。サイトにアクセスしたときにコンソールでエラーを表示できます。

サーバー構成:私が試してみました

<script src="{{ URL::asset('posts.js', true) }}"></script> 

物事:

  • 私は「はJS /ポストを使用してみましたが

    server { 
        return 404; 
    } 
    
    server { 
        listen 80; 
        listen [::]:80 ipv6only=on; 
    
        listen 443 ssl; 
    
        root /var/www/zwestwind.com/html; 
        index index.php index.html index.htm; 
    
        # Make site accessible from http://localhost/ 
        #server_name example.com www.example.com; 
        server_name zwestwind.com www.zwestwind.com; 
    
        ssl on; 
        ssl_certificate /etc/nginx/ssl/pub_clf_origin.pem; 
        ssl_certificate_key /etc/nginx/ssl/priv_clf_origin.key; 
    
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
        ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; 
        ssl_prefer_server_ciphers on; 
    
        location/{ 
         # First attempt to serve request as file, then 
         # as directory, then fall back to displaying a 404. 
         try_files $uri $uri/ =404; 
         # Uncomment to enable naxsi on this location 
         # include /etc/nginx/naxsi.rules 
        } 
    
        # route to laravel project: $uri = /sandboxes/zypth/blog/public/index.php 
        location ~ ^/sandboxes/zypth/blog { 
         alias /var/www/zwestwind.com/html/sandboxes/zypth/blog/public; 
         try_files $uri $uri/ @laravel; 
    
         location ~ \.php$ { 
          fastcgi_split_path_info ^(.+\.php)(/.+)$; 
          fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
          #fastcgi_index index.php; 
          include fastcgi_params; 
          fastcgi_param SCRIPT_FILENAME /var/www/zwestwind.com/html/sandboxes/zypth/blog/public/index.php; 
         } 
        } 
    
        location @laravel{ 
         rewrite /sandboxes/zypth/blog/(.*)$ /sandboxes/zypth/blog/index.php?/$1 last; 
        } 
    
        # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests 
        #location /RequestDenied { 
        # proxy_pass http://127.0.0.1:8080;  
        #} 
    
        error_page 404 /404.html; 
    
        # redirect server error pages to the static page /50x.html 
    
        error_page 500 502 503 504 /50x.html; 
        location = /50x.html { 
         root /usr/share/nginx/html; 
        } 
    
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 
        # 
        location ~ \.php$ { 
         fastcgi_split_path_info ^(.+\.php)(/.+)$; 
         # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini 
    
         # With php5-cgi alone: 
         fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
         fastcgi_index index.php; 
         include fastcgi_params; 
        } 
    
        # deny access to .htaccess files, if Apache's document root 
        # concurs with nginx's one 
        # 
        #location ~ /\.ht { 
        # deny all; 
        #} 
    } 
    

    ブレード・コードは、JSファイルを含めます。 js 'や他の多くのバリエーションが含まれています。例えば、zwestwind.com/sandboxes/zypth/blog/public/posts.jsなどのハードコーディングされたパスは無駄です(prot ocol、私は評判のために2つのリンクしか掲載できません)。

  • ロケーションブロックの追加:location〜.js $ {...}アプリケーション/ x-javascriptのコンテンツヘッダを追加する
  • (http)ブログで同じアプリケーションを提供するようにvhostサーバを設定しました。 zwestind.com/posts。すべてのルーティングとCSS/JSファイルのインクルードがそこで動作するので、それをチェックしてください。そのサブドメインのサーバー設定は、Laravelインストールガイドに指定されているとおりです。

この問題は、プライマリドメインのサーバー設定の問題(つまり、「^/sandboxes/zypth/blog」をリッスンする場所ブロックがJSファイルのリクエストをキャッチしていることを原因としていると推測しています)その結果、404になります。これをどのように修正すればよいでしょうか?

スクリプトが動作すると、「posts.jsは準備完了です!」と表示されます。コンソールに表示されます(httpのサブドメインを参照してください)。

ありがとうございました。

P.S.もし私がこのアプリケーション(ともっと)をネストされたディレクトリで提供したいのであれば誰でも興味があります.Webサーバーの設定方法を学びながらONE SSL証明書を使ってライブデモアプリケーションをホストしたいからです。このサーバーは、大量のトラフィック用ではありません。このようなファイルを含む

答えて

0

試してみてください。

<script src="/js/posts.js"></script> 

「/」ディレクトリには、JSとCSSディレクトリがあるルート(パブリックフォルダ)にリクエストを送信する前に。

これは、nginx設定で新しいロケーションルートまたはエイリアスを追加した方が良いことがわかりました。

私は画像と同じことを行い、うまく動作します。

関連する問題