如何在Docker中都在NGINX反向代理后面请求Jenkins API REST?

时间:2019-04-08 05:14:32

标签: docker nginx jenkins docker-compose jenkins-api

我在NGINX反向代理后面有Jenkins,这要归功于docker compose,两个docker容器都在同一个网络中。 Jenkins服务器的唯一入口是通过暴露80端口的NGINX 。 请求到达NGINX容器后,它将重定向到Jenkins。

我没有收到成功的答复,但是没有NGINX反向代理,一切都很好我该如何解决?

此外,您还可以找到其他一些文件,例如nginx default.conf docker-compose.yml https://github.com/orbismobile/docker-nginx-jenkins-android

设置它们之后:

  1. NGINX用户基本身份验证:user1-android(password)
  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

JENKINS DOCKERFILE

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

NGINX DOCKER文件

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,但是实际的输出是Jenkins使用此主体的403 FORBIDDEN HTTP CODE->要求身份验证-您被身份验证为:匿名

1 个答案:

答案 0 :(得分:0)

我假设您尝试了jenkins容器中的curl命令形式。

这对我有用:

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

我认为您正在尝试访问错误的Jenkins URL。