bootjpのメモ帳

https://bootjp.me で書くほどではないことを

Nginxの$hostと$http_hostのちがい

proxy のconf で$hostを$http_hostを間違えて rails のinvalid authentication tokenとなった。

nginxの $host 変数は

in this order of precedence: host name from the request line, or host name from the “Host” request header field, or the server name matching a request

と定義されている https://nginx.org/en/docs/http/ngx_http_core_module.html#var_host

実際に以下のようなログフォーマットでログを書き出してみるとこうなる

log_format debug 'host: $host, http_host: $http_host';
host: localhost, http_host: localhost:8080
host: localhost, http_host: localhost:8080

つまりポート番号の有無で token を発行したホストでないものからpostリクエストがあり、invalid authentication tokenとなった。