Node.js ';无法获取';在Nginx中使用代理传递时在Express上

Node.js ';无法获取';在Nginx中使用代理传递时在Express上,node.js,express,ssl,nginx,https,Node.js,Express,Ssl,Nginx,Https,我在DigitalOcean droplet上运行了两个网站,现在我已经在这两个网站上升级到https。在其中一个站点上,我向正在运行的节点服务器发出发送电子邮件的请求,但由于我启用了https,它会阻止此请求,因为它不是https(逻辑上)。因此,我尝试在启用了https的一个站点上使用节点mailserver作为代理传递 要进行测试,我要代理传递的节点服务器如下所示: exports.start = () => { app.use(bodyParser.json());

我在DigitalOcean droplet上运行了两个网站,现在我已经在这两个网站上升级到https。在其中一个站点上,我向正在运行的节点服务器发出发送电子邮件的请求,但由于我启用了https,它会阻止此请求,因为它不是https(逻辑上)。因此,我尝试在启用了https的一个站点上使用节点mailserver作为代理传递

要进行测试,我要代理传递的节点服务器如下所示:

exports.start = () => {
    app.use(bodyParser.json());
    app.use(cors());
    app.get('/', (req, res) => res.send('Hello World!'));
    app.listen(4004, () => console.log('Server listening on port 4004'));
};

this.start();
server {

server_name mywebsite.nl www.website.nl;

location / {
    proxy_pass http://<PIVATE IP>:4000;
    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;
}

location /ws {
    proxy_pass http://<PIVATE IP>:4002;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
}


location /mailmeister {
            proxy_pass http://<PIVATE IP>:4004;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
}


listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mywebsite.nl/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mywebsite.nl/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
我的Nginx
sites enabled/default
如下所示:

exports.start = () => {
    app.use(bodyParser.json());
    app.use(cors());
    app.get('/', (req, res) => res.send('Hello World!'));
    app.listen(4004, () => console.log('Server listening on port 4004'));
};

this.start();
server {

server_name mywebsite.nl www.website.nl;

location / {
    proxy_pass http://<PIVATE IP>:4000;
    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;
}

location /ws {
    proxy_pass http://<PIVATE IP>:4002;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
}


location /mailmeister {
            proxy_pass http://<PIVATE IP>:4004;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
}


listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mywebsite.nl/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mywebsite.nl/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

有人知道如何解决这个问题吗?

curl localhost:4004/mailmeister
应该返回相同的404。因此,您需要将node.js配置为路由
/mailmeister
,或者将nginx配置为减少
/
的路径。请参见此操作,非常感谢。