Как запросить Jenkins API REST за обратным прокси-сервером NGINX в Docker? - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть Jenkins за обратным прокси-сервером NGINX, оба docker-контейнера находятся в одной сети, благодаря docker compose. Единственный вход на сервер Jenkins через NGINX, который предоставляет порт 80 . Как только запрос достигает контейнера NGINX, он перенаправляется в Jenkins.

Я не получаю успешного ответа, но без обратного прокси-сервера NGINX все работает нормально . Как я могу решить эту проблему?

Кроме того, вы можете найти некоторые дополнительные файлы, такие как nginx default.conf и docker-compose.yml https://github.com/orbismobile/docker-nginx-jenkins-android

После их настройки:

  1. Базовый auth пользователя NGINX: user1 - android (пароль)
  2. Администратор Jenkins: user2 - ios (пароль)

Я пробовал это

curl -u user1:android http://localhost:8080/api/json?pretty=true
curl -u user2:ios http://localhost:8080/api/json?pretty=true
curl -U user2:ios -u carlos1:android http://localhost:8080/api/json?pretty=true

ДЖЕНКИНС ДОКЕРФИЛЬ

FROM jenkins/jenkins:latest
ENV JENKINS_OPTS="--prefix=/jenkins"

NGINX DOCKER FILE

FROM nginx:latest
# Install a password file creation utility to create username-password pairs
RUN apt-get update; apt-get install -y --no-install-recommends apache2-utils
RUN mkdir /etc/apache2; cd /etc/apache2; touch .htpasswd

DOCKER-COMPOSE.YAML

version: '3'
services:
  jenkinsservice:
    build: ./jenkins-service
    volumes:
      - jenkinshomevol:/var/jenkins_home  

  nginxservice:
    build: ./nginx-service
    ports:
      - "80:80"
    volumes:
      - ./nginx-service/conf.d:/etc/nginx/conf.d
      - ./nginx-service/html:/usr/share/nginx/html
    depends_on:
      - jenkinsservice

volumes:
  jenkinshomevol:   

Я ожидаю, что HTTP-код 200 OK, но фактический вывод - 403 ЗАПРЕЩЕН HTTP-КОД HTTP от Jenkins с этим телом -> Требуется аутентификация - Вы аутентифицированы как: анонимный

1 Ответ

0 голосов
/ 08 апреля 2019

Полагаю, вы пробовали форму команд curl внутри контейнера jenkins.

Это работает для меня:

curl -u user2:ios http://127.0.0.1:8080/jenkins/api/json?pretty=true

Я думаю, что вы пытаетесь получить доступ к неправильному URL Дженкинса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...