0

我的問題是在Nginx服務器(Ubuntu)上使用Laravel 5.4來提供CSS和JS文件。我已將服務器配置爲從嵌套子目錄(不在Web服務器的根目錄中)爲應用程序提供服務。路由正在工作。請參閱:Laravel 5.4在Nginx的子目錄中提供。 404當包括js文件

問題是,我不能包括JS文件(和可能的CSS)。 JS文件位於「blog/public/js/posts.js」中。

以下附件是我的站點配置以及在刀片模板中包含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文件:

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

的事情,我曾嘗試:

  • 我一直在使用「JS /職位嘗試。 js'和許多其他變體,包括硬編碼路徑,如'zwestwind.com/sandboxes/zypth/blog/public/posts.js'無濟於事(與prot由於聲望,我只能發佈2個鏈接)。
  • 添加位置塊:location〜.js $ {...}添加應用程序的內容頭/ x-javascript
  • 我已經配置了vhost服務器以在(http)博客上提供相同的應用程序。 zwestind.com/posts。所有路由和CSS/JS文件包含在那裏工作,檢查出來。該子域的服務器配置與Laravel安裝指南中的指定完全相同。

我猜這個問題源於主域的服務器配置問題...... ie)偵聽「^/sandboxes/zypth/blog」的位置塊正在捕獲對JS文件的請求並修改該URI,從而產生了一個404。我該如何解決這個問題?

腳本工作時,它會說「posts.js已準備就緒!」在控制檯中(有關示例,請參閱http上的子域)。

謝謝。

P.S.如果有人對我爲什麼想在嵌套目錄中提供這個應用程序(以及更多)感到好奇,那是因爲我想通過ONE域名使用ONE SSL證書託管實時演示應用程序,同時還要學習如何配置Web服務器。此服務器不適用於繁忙的流量。

回答

0

嘗試包括這樣的文件:

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

在「/」之前的目錄將請求發送到根(公用文件夾),其中JS和CSS目錄是。

我發現這更好,然後在nginx配置中添加新的位置根或別名。

我對圖像做同樣的事情,它工作正常。

相關問題