Node.js 静态内容nodejs应用程序反向代理的NgInx禁止错误

Node.js 静态内容nodejs应用程序反向代理的NgInx禁止错误,node.js,nginx,amazon-ec2,https,proxy,Node.js,Nginx,Amazon Ec2,Https,Proxy,我正在为我的expressjs网站使用带有HTTPS的NgInx反向代理。网站是通过https访问的,没有任何问题,请求是在Nodejs服务器上获得的,但问题是静态内容 所有静态内容(JS、CSS、图像、字体等)都会抛出403禁止的错误 以下是我的ngInx配置文件内容: server { listen 80; listen 443 ssl; ssl on; ssl_certificate /home/ec2-user/certs/myapp.bundle.cr

我正在为我的expressjs网站使用带有HTTPS的NgInx反向代理。网站是通过https访问的,没有任何问题,请求是在Nodejs服务器上获得的,但问题是静态内容

所有静态内容(JS、CSS、图像、字体等)都会抛出403禁止的错误

以下是我的ngInx配置文件内容:

server {
    listen  80;
    listen 443 ssl;
    ssl on;
    ssl_certificate /home/ec2-user/certs/myapp.bundle.crt; 
    ssl_certificate_key /home/ec2-user/certs/myapp.key;

    root /home/ec2-user/myapp;

    server_name example.com;
    access_log /var/log/nginx/nginx.vhost.access.log;
    error_log /var/log/nginx/nginx.vhost.error.log;

    location / {
       #try_files $uri $uri/ /index.php?$args ;
       #try_files $uri $uri/ =404;
        proxy_pass https://example.com:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
我正在使用AmazonEC2和CentOS。 请帮忙。提前谢谢

location / {
        proxy_pass https://example.com:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
您正在将所有流量重定向到nodejs。这意味着expressjs将提供静态内容

要提供静态文件,请使用express中的express.static内置中间件功能

将包含静态资产的目录的名称传递给express.static middleware函数,以开始直接为文件提供服务。例如,使用以下代码为名为public的目录中的静态文件提供服务:

app.use(express.static('public'))
更多信息请点击此处:

您正在将所有流量重定向到nodejs。这意味着expressjs将提供静态内容

要提供静态文件,请使用express中的express.static内置中间件功能

将包含静态资产的目录的名称传递给express.static middleware函数,以开始直接为文件提供服务。例如,使用以下代码为名为public的目录中的静态文件提供服务:

app.use(express.static('public'))

此处的更多信息:

您正在尝试从NodeJS应用程序服务器静态文件,这不是正确的方法,因为您使用的是Nginx。在配置中添加以下类型的块

location ~ \.(css|gif|png|jpe?g|ico|js|swf|ttf|woff) {
    expires 30d;
    root /home/ec2-user/myapp;
    try_files $uri =404;
}

您可能需要根据使用资产的方式调整根文件夹。但是如果您使用的是与
/home/ec2 user/myapp
相同的代码,那么您可以跳过添加这一行您正在尝试从您的NodeJS应用程序服务器静态文件,这不是正确的方法,因为您使用的是Nginx。在配置中添加以下类型的块

location ~ \.(css|gif|png|jpe?g|ico|js|swf|ttf|woff) {
    expires 30d;
    root /home/ec2-user/myapp;
    try_files $uri =404;
}

您可能需要根据使用资产的方式调整根文件夹。但是如果您使用的是与
/home/ec2 user/myapp
相同的内容,那么您可以跳过添加这一行

您是通过节点服务器还是ngnix提供静态内容?我尝试了从express和nginx提供静态内容的两种方式。您是通过节点服务器还是ngnix提供静态内容?我尝试了两种方式提供静态内容我已经在使用express.static中间件了。但是我想提供NgInx的静态内容。但是它给了我403禁止。我已经在使用express.static中间件了。但是我想提供NgInx的静态内容。但是它给了我403禁止。谢谢你的帮助。我尝试过这个,但它给出了403禁止静态内容。我还授予了755权限访问我的公用文件夹。请发布nginx日志中的完整错误。您还需要确保静态文件夹上方的所有父文件夹都已执行(chmod a+x)权限。谢谢您的帮助。我尝试过这个,但它给出了403禁止静态内容。我还授予了755权限访问我的公用文件夹。发布nginx日志中的完整错误。您还需要确保静态文件夹上方的所有父文件夹都具有执行(chmod a+x)权限