Php Laravel和Nginx静态文件

Php Laravel和Nginx静态文件,php,laravel,nginx,assets,Php,Laravel,Nginx,Assets,因此,我在让Nginx为我的Laravel应用程序提供静态文件方面遇到了问题。我可以在chrome的开发工具中看到,请求被发送到路径,这些文件应该在那里()。但它们根本没有被加载。我试过用很多方法让它工作,但它似乎不起作用。有人能帮我吗?干杯 server { listen 80; server_name mydomainname.com; keepalive_timeout 70; root /var/www/html/portfolio/publ

因此,我在让Nginx为我的Laravel应用程序提供静态文件方面遇到了问题。我可以在chrome的开发工具中看到,请求被发送到路径,这些文件应该在那里()。但它们根本没有被加载。我试过用很多方法让它工作,但它似乎不起作用。有人能帮我吗?干杯

  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文件等。

URL不需要在路径中包含
/public
部分
/public
是web资产的根目录。因此,您的url应该是:

http://mywebsite.com/css/style.css

正如Kyslik暗示的,这可能是一个权限问题

我有一个类似的问题,在Windows10上的Homestead上运行Laravel。在我的例子中,我可以从
public\css
目录访问文件,但不能从
public\css\vendor
目录访问文件。我意识到我从Windows中创建了
供应商
目录,因此,它中的文件无法被X访问


为了解决这个问题,我删除了
vendor
目录,并从vagrant框中重新创建了它

您所要做的就是了解服务器是一台完全不同的pc,并解析全球托管服务的路径范围

最佳实践是确保您的资产只深入应用程序一步

例如

错误

正确

服务器将不会强调扫描目录。服务器只会更深一步


AWS Ec2实例Ubuntu x Laravel应用程序。

第一个红旗是“public”,它不应该在那里(例如:
example.com/css/whatever.css
)。你需要打开你的日志(nginx日志)并阅读它。500很可能是权限问题,但请阅读日志,可能需要编辑问题并添加日志尾部。如果是404,还可以看看laravels日志。另外,您是否通过…访问您的页面
public/index.php
?是的,但是当我在这样的路径上卷曲时,我得到404,这就是为什么我认为它没有在all@AndrewPomorski在
public
文件夹中是否有
css
文件夹?那个文件夹里有style.css吗?@Kyslik是的,没错。