配置nginx从不同的droplet

时间:2015-12-02 22:23:07

标签: node.js nginx digital-ocean

我在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;
    }

}

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