req.protocol从不给https支持nginx代理

时间:2016-06-25 11:34:34

标签: node.js express nginx https

我正在尝试识别我的快递应用是否通过 https 协议提供服务。

使用 nginx 处理认证和加密(在同一台计算机上)和转发请求,即使使用https并且正常工作,req.protocol也会评估为http

我已尝试过以下两种情况(单独):

app.set('trust proxy', 'loopback');

app.enable('trust proxy');

req.protocol仍然报告http

是什么给出了?

此处req.header

{ 'x-real-ip': '196.38.239.10',
  'x-forwarded-for': '196.38.239.10',
  host: 'idwork.co',
  'x-nginx-proxy': 'true',
  connection: 'close',
  'content-length': '0',
  'cache-control': 'no-cache',
  origin: 'file://',
  'content-type': 'application/json',
  'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Postman/4.3.2 Chrome/47.0.2526.73 Electron/0.36.2 Safari/537.36',
  'postman-token': 'redacted',
  accept: '*/*',
  'accept-encoding': 'gzip, deflate',
  'accept-language': 'en-US' }

以下是我的相关(?)nginx转发规则:

location / {
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_set_header X-NginX-Proxy true;
  proxy_pass 127.0.0.1:1234;
  proxy_redirect off;
}

1 个答案:

答案 0 :(得分:5)

我需要将它添加到我的nginx块中:

proxy_set_header X-Forwarded-Proto https;