通过 NGINX 反向代理看不到“_*”标头

通过 NGINX 反向代理看不到“_*”标头

我已经使用 nginx 设置了一个反向代理,通过端口 80 为我的前端提供服务,然后通过 /api 将其重定向到 443 ssl https 和端口 5000 上的 api 后端 node-express。到目前为止,除了我无法通过 json-web-token 验证自己的身份外,基本一切正常。我总是得到“未授权”。

通过postman尝试了一下,access_token 100%正确。

如果这个问题之前已经被问过,我很抱歉(已经在 Google 上搜索了几天了)但整个主题对我来说很新,而且当涉及到安全问题时,我宁愿不做一些半生不熟的事情。

我的 nginx 配置如下

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;
        return 301 https://$host$request_uri;
}

# HTTPS — proxy all requests to the Node app
server {
        # Enable HTTP/2
        listen 443 ssl http2 default_server;
        listen [::]:443 ssl http2 default_server;
        server_name example.com;

        root /var/www/example.com/html;

        location / {
                auth_basic "Restricted";
                auth_basic_user_file /var/www/example.com/.htpasswd;
                try_files $uri $uri/ /index.html;
        }


        location /api {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:5000;
        }

        # Use the Let’s Encrypt certificates
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

        # Include the SSL configuration from cipherli.st
        include snippets/ssl-params.conf;
}

我的问题是:

1.) 我需要在这里做哪些更改才能使我的 jwt-token 成功通过 api 后端传输?2.) 我是否也需要在后端服务器上明确启用 https?

谢谢你!!

答案1

发现问题 - json web token 在变量名中包含下划线 - 并且 nginx 删除了整个变量。

使固定:

underscores_in_headers on;

相关内容