所以我遇到了让Nginx为我的Laravel应用程序提供静态文件的问题。我可以在chrome的开发工具中看到对路径的请求,这些文件应该是(this)。但它们根本没有装载。我试过让它在很多方面起作用,但它似乎并没有完成这项工作。有人可以帮我吗?干杯!
server {
listen 80;
server_name mydomainname.com;
keepalive_timeout 70;
root /var/www/html/portfolio/public;
index index.php index.html index.htm index.nginx-debian.html;
autoindex on;
charset utf-8;
location / {
root /var/www/html/portfolio/public;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php$is_args$args;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/myapp-error.log error;
sendfile on;
client_max_body_size 100m;
rewrite ^ /index.php last;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
location ~ /\.ht {
deny all;
}
}
基本上,/ public目录中有很多文件没有加载,但应该是。例如用于角度模板的css,js,html文件等......
答案 0 :(得分:0)
网址不需要在路径中包含/public
部分。 /public
是您的网络资源的根。所以你的网址应该是:
http://mywebsite.com/css/style.css
答案 1 :(得分:0)
正如Kyslik暗示的那样,这可能是一个许可问题。
我遇到了类似的问题,在Windows 10上运行家园上的Laravel.在我的情况下,我可以访问public\css
目录中的文件,但不能访问public\css\vendor
。我意识到我从Windows创建了vendor
目录,因此,ngingx无法访问其中的文件。
要解决此问题,我删除了vendor
目录,并在vagrant框中重新创建了该目录。
答案 2 :(得分:0)
您需要做的就是完全理解服务器是一台不同的PC,并解决全球托管服务的路径范围。
最佳实践是确保您的资产仅比应用程序更深入
例如
<link href="folder/bootstrap/css/bootstrap.min.css" />
错误
<link href="bootstrap/bootstrap.min.css" />
正确
服务器不会强调扫描目录。服务器只会更深一步。
AWS Ec2实例Ubuntu x Laravel应用程序。