Nginx
通過 NGINX 反向代理看不到“_*”標頭
我已經使用 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;