Drone.io с Github redirect_uri_mismatch

Я пытаюсь настроить Drone CI 0.6 с помощью Github. Однако я продолжаю получать ошибки oauth. Возможно, кто-то может указать, что я делаю неправильно. Я пробовал как с DRONE_HOST, так и без него, но всегда говорит о несоответствии.

Ошибка:

не может аутентифицировать пользователя. redirect_uri_mismatch Redirect_uri ДОЛЖЕН соответствовать зарегистрированному URL-адресу обратного вызова для этого приложения. https://developer.github.com/v3/oauth/#redirect-uri-mismatch

docker-compose.yml:

version: '2'

services:
  drone-server:
    image: drone/drone:0.6
    ports:
      - 8822:8000
    volumes:
      - /var/lib/drone:/var/lib/drone/
    restart: always
    environment:
      - DRONE_OPEN=true
      - DRONE_HOST=http://ci.rallabs.com
      - DRONE_GITHUB=true
      - DRONE_GITHUB_CLIENT=myGithubClient
      - DRONE_GITHUB_SECRET=myGithubSecret
      - DRONE_SECRET=mySecret
  drone-agent:
    image: drone/drone:0.6
    command: agent
    restart: always
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_SERVER=ws://drone-server:8000/ws/broker
      - DRONE_SECRET=mySecret

Сведения о приложении Github:

Настройки Github


person Brenwell    schedule 19.05.2017    source источник
comment
Вы используете дрон за обратным прокси-сервером или балансировщиком нагрузки, например, с nginx?   -  person Brad Rydzewski    schedule 19.05.2017
comment
да, это стоит за nginx, и я использую функцию proxy_pass для этого   -  person Brenwell    schedule 21.05.2017


Ответы (1)


Распространенной причиной несоответствия redirct_url является то, что дрон работает за обратным прокси-сервером (например, nginx) и не может определить свой собственный адрес для правильного создания URL-адреса перенаправления. Решение этой проблемы заключается в настройке параметров X-Forwarded-For и X-Forwraded-Proto, позволяющих Drone определять свой собственный адрес.

Для nginx, начиная с версии 0.6, это рекомендуемая конфигурация nginx из документации [1]

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 80;
    server_name drone.example.com;

    location / {
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;

        proxy_pass http://127.0.0.1:8000;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_buffering off;

        chunked_transfer_encoding off;
    }

    location ~* /ws {
        proxy_pass http://127.0.0.1:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
    }
}

[1] http://docs.drone.io/setup-with-nginx/

person Brad Rydzewski    schedule 21.05.2017