我的問題是在Nginx服務器(Ubuntu)上使用Laravel 5.4來提供CSS和JS文件。我已將服務器配置爲從嵌套子目錄(不在Web服務器的根目錄中)爲應用程序提供服務。路由正在工作。請參閱:Laravel 5.4在Nginx的子目錄中提供。 404當包括js文件
- https://zwestwind.com/sandboxes/zypth/blog/tasks
- https://zwestwind.com/sandboxes/zypth/blog/posts
- ,只是..blog /爲好。
問題是,我不能包括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服務器。此服務器不適用於繁忙的流量。