nginx loadbalancer и OAuth - PullRequest
       22

nginx loadbalancer и OAuth

3 голосов
/ 15 марта 2012

Я пытаюсь настроить балансировщик нагрузки / прокси-сервер nginx для двух серверов, на обоих из которых работают приложения с проверкой подлинности OAuth.Все работает нормально, когда nginx работает на 80-м порту, но когда я помещаю его на любой другой порт, аутентификация OAuth завершается неудачно с сообщением об ошибке «недопустимая подпись».

Вот моя конфигурация сервера в nginx.conf:

server {
    listen 80;
    server_name localhost;
    location / {
      proxy_pass  http://webservice;

        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_set_header        X-Forwarded-Port $server_port;
        proxy_set_header        X-Forwarded-Host $host;
        proxy_set_header        X-FORWARDED-PROTO https;
    }

Кто-нибудь сталкивался с подобной проблемой?

PS: я заметил, что порт 80 пропущен из свойства области OAuth, но другие порты добавляются нормально.

1 Ответ

5 голосов
/ 15 марта 2012

Это, вероятно, никак не связано с nginx. OAuth (1, а не 2) требует URL подписи, который будет http://webservice:81, если вы переместили его на порт 81. Убедитесь, что ваш код OAuth знает, что веб-сайт на самом деле находится на порту 80, а не 81.

Либо обновите ваш клиент, указав, что это порт 81, либо скажите серверу, что он на 80.

Заменить 81 вашим любимым портом

...