Nginx

通過 NGINX 反向代理看不到“_*”標頭

  • November 19, 2017

我已經使用 nginx 設置了一個反向代理,通過埠 80 為我的前端提供服務,然後將其重定向到 443 ssl https 和我的 api 後端 node-express 在埠 5000 上通過 /api。到目前為止,除了我無法通過 json-web-token 對自己進行身份驗證之外,基本工作正常。我總是得到“未經授權”。

通過郵遞員嘗試過,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?

謝謝!!

發現問題 - json web 令牌在變數名中包含下劃線 - 並且 nginx 刪除了整個變數。

使固定:

underscores_in_headers on;

引用自:https://serverfault.com/questions/882842