[英]NgInx forbidden error for static content nodejs app reverse proxy
我正在通过HTTPS为我的expressjs网站使用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;
}
}
我正在使用Amazon EC2和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中间件函数,以开始直接提供文件。 例如,使用以下代码在名为public的目录中提供静态文件:
app.use(express.static('public'))
此处提供更多信息: https : //expressjs.com/en/starter/static-files.html
您正在尝试从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
则可以跳过添加此行的操作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.