I'm trying to recognise whether my express app is serving over an https protocol.
Using nginx to handle the certification and encryption (on the same machine), and forward requests, req.protocol
evaluates to http
even when https is being used and working fine.
I've tried both of the following (individually):
app.set('trust proxy', 'loopback');
and
app.enable('trust proxy');
Yet req.protocol
still reports http
.
What gives?
Here's 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' }
Here are my relevant(?) nginx forwarding rules:
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;
}
I needed to add this to my nginx block:
proxy_set_header X-Forwarded-Proto https;
🙈
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With