【问题标题】:How to request Jenkins API REST behind NGINX reverse proxy both in Docker?如何在 Docker 中请求 NGINX 反向代理后面的 Jenkins API REST?
【发布时间】:2019-04-08 05:14:32
【问题描述】:

我有 Jenkins 支持 NGINX 反向代理,由于 docker compose,两个 docker 容器都在同一个网络中。 Jenkins服务器的唯一入口是通过暴露80端口的NGINX。 一旦请求到达 NGINX 容器,它就会重定向到 Jenkins。

我没有得到成功的响应,但是没有 NGINX 反向代理一切正常我该如何解决?

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

设置后:

  1. 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 码头工人文件

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:   

我希望得到 200 OK HTTP 代码,但实际输出是来自 Jenkins 的 403 FORBIDDEN HTTP CODE 与此正文 --> 需要身份验证 - 您的身份验证为:匿名

【问题讨论】:

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


    【解决方案1】:

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

    这对我有用:

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

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

    【讨论】:

    • 你的帖子说的不一样
    • 我尝试了相同的 ´´´curl -u user2:ios 127.0.0.1:8080/jenkins/api/json?pretty=true´´´ 但我收到此错误:curl: (7) 无法连接到 127.0.0.1 端口 8080:连接拒绝了。我认为这是因为 jenkins 的唯一入口是通过 NGINX 暴露了 80 端口,这个 url localhost/jenkins。如果我将其更改为:´´´curl -u user2:ios 127.0.0.1/jenkins/api/json?pretty=true´´´ 我收到此错误:需要身份验证您的身份验证为:匿名 ... HTTP 403 禁止
    • 你知道发生了什么吗?请求到达 Jenkins 服务器,但它需要 Jenkins 管理员用户凭据(user1:android),无论出于何种原因,我的请求都没有传递这些值,只识别 NGINX 的凭据
    • 是否有可能您没有从 Web 界面完成 jenkins 安装?您将在日志中生成的密码放在哪里?在我看来,这可能是问题所在。
    猜你喜欢
    • 1970-01-01
    • 2017-10-14
    • 2021-07-15
    • 1970-01-01
    • 2016-12-08
    • 2019-08-31
    • 2021-03-27
    • 2016-07-22
    • 1970-01-01
    相关资源
    最近更新 更多