Потерян пользовательский заголовок http при использовании nginx+passenger
Я пытаюсь добавить несколько пользовательских заголовков http для аутентификации с мобильного клиента, например
{'MOBILE_KEY' => 'xxx', 'MOBILE_SIGNATURE' => 'yyy'}
когда я работаю с webrick/thin/mongrel в разработке, он работает нормально, но когда я развернул его на производственном сервере с помощью nginx+passenger, пользовательские заголовки удаляются, почему? и что я могу сделать?
4 ответа
Есть директива в nginx
это говорит, чтобы игнорировать заголовки с '_' в имени.
http://nginx.org/en/docs/http/ngx_http_core_module.html
Это помогло мне, но переписывание вашего программного обеспечения для использования X-формата может быть даже лучше.
Попробуйте использовать именование в стиле X для своих пользовательских заголовков. Я столкнулся с этой проблемой при передаче заголовка с именем "device_id". Это будет удалено где-нибудь в слое nginx/Passenger. Я подозреваю, что это был Пассажир, но не уверен.
Я изменил заголовок на "X-device-id", и тогда этот заголовок был доступен мне в моем контроллере Rails как request.headers['X-device-id'].
Вам нужно будет сделать две вещи:
Убедитесь, что все ваши токены начинаются с "X-"
пример: "X-your-token"
Сконфигурируйте nginx для прохождения этого токена через:
proxy_pass_header X-mobile-access-token;
Просто на тот случай, если у меня возникла точно такая же проблема с Apache (httpd-service) + Passenger, и, как и у всех вас, все, что мне нужно было сделать, это изменить "access_token" на "access-token" с
curl --header "access_token:MnRj6qCefRc8NuYzcBvhUvRreEGVvxh9yuNe0XcOIoEA==" --data "uuid=cef8dfa1ae6cab68d8bd47e8137707ee" http://localhost/website/transactions/pull-latest
в
curl --header "access-token:MnRj6qCefRc8NuYzcBvhUvRreEGVvxh9yuNe0XcOIoEA==" --data "uuid=cef8dfa1ae6cab68d8bd47e8137707ee" http://localhost/website/transactions/pull-latest