我在DigitalOcean上有2个小滴(实例)。一个用作Web服务器并安装了Nginx,其中一个有我的node.js应用程序。 我已设置Nginx来处理SSL,并将所有非SSL和www流量重定向到https://url.com。我使用proxy_pass来引用我的其他Droplet上的节点应用程序。到现在为止还挺好。一切正常。
现在我还想使用Nginx来提供静态文件,而不是使用Node。我的静态文件也在App droplet上的/ var / www / node_app / public文件夹中。 但出于某种原因,我无法正确地引用它们。
我该怎么做?
这是我的Nginx配置:
server {
listen 80;
server_name www.url.com;
return 301 https://url.com$request_uri;
}
server {
listen 443 ssl;
server_name www.url.com;
return 301 https://url.com$request_uri;
ssl_certificate /etc/nginx/ssl/www.url.com.chained.crt;
ssl_certificate_key /etc/nginx/ssl/www.url.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;
ssl_prefer_server_ciphers on;
}
server {
listen 443 ssl;
server_name url.com;
ssl_certificate /etc/nginx/ssl/www.url.com.chained.crt;
ssl_certificate_key /etc/nginx/ssl/www.url.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;
ssl_prefer_server_ciphers on;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location ~ ^/(images/|fonts/) {
proxy_pass http://XX.XXX.XXX.XXX;
root /var/www/node_app/public;
autoindex off;
}
location / {
proxy_pass http://XX.XXX.XXX.XXX:4000;
proxy_redirect off;
proxy_http_version 1.1;
}
}
答案 0 :(得分:0)
在无限地挖掘互联网以寻求解决方案之后。我一步一步地回溯。我确保我的应用静态文件应按以下方式配置
app.use(express.static(__dirname + '/public'));
on your nginx config for available site. add the following
$ sudo nano /etc/nginx/sites-available/example.com
proxy_pass http://localhost: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;
此测试完成后,配置并使用此命令重新启动服务器
$ sudo nginx -t
还有
sudo systemctl restart nginx
并确保您所有的html静态文件都以正斜杠引用。像这样
<!-- Custom styles -->
<link href="/css/bundle.min.css" rel="stylesheet">
您还可以按照数字海洋链接上的步骤配置nodejs应用程序 https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-18-04