0

问题

我遵循了这个Drone Setup Tutorial,但我没有设法使用 Apache 服务器正确设置 Drone CI:

  • 当我尝试通过 IP 访问 Drone 时,它​​会响应任何请求。(在我的情况下http://192.168.99.100:8000/:)
  • 但我无法通过 Apache 通过域地址访问 Drone。(如https://drone.suriyaa.tk/:)

截图

drone-agent_1Windows 10 上 Docker 快速启动终端下调试模式下的输出:

调试模式下 <code>drone-agent_1</code> 的输出

Drone 与 IP 完美搭配:

IP下的无人机

但是 Drone 无法在域地址下使用 Apache 服务和显示:

域地址下的无人机


有关配置的信息

我的docker-compose.yml文件:

version: '2'

services:
  drone-server:
    image: drone/drone:0.5
    environment:
      DRONE_ADMIN: <an_admin_user>
    ports:
      - 8000:8000
    volumes:
      - C:\Users\Suriyaa\Downloads\DRONE\var\lib\drone:/var/lib/drone/
    restart: always
    environment:
      - DRONE_HOST=http://192.168.99.100
      - DRONE_OPEN=true
      - DRONE_GITHUB=true
      - DRONE_GITHUB_URL=https://github.com
      - DRONE_GITHUB_CLIENT=<github_client_id>
      - DRONE_GITHUB_SECRET=<github_secret>
      - DRONE_GITHUB_SCOPE=repo,repo:status,user:email,read:org
      - DRONE_GITHUB_CONTEXT=continuous-integration/drone
      - DRONE_GITHUB_SKIP_VERIFY=false
      - DRONE_SECRET=<secret>

  drone-agent:
    image: drone/drone:0.5
    command: agent
    restart: always
    depends_on: [ drone-server ]
      - C:\Users\Suriyaa\Downloads\DRONE\var\run\docker.sock:/var/run/docker.sock
    environment:
      - DRONE_SERVER=ws://192.168.99.100:8000/ws/broker
      - DRONE_SECRET=<secret>

我在 Apache 下的虚拟主机配置:

<VirtualHost *:80>
    ServerName drone.suriyaa.tk
    ServerAlias drone.suriyaa.tk
    ServerAdmin <an_email_address>

    BufferedLogs On

    ProxyPreserveHost On
    ProxyRequests off

    RequestHeader set X-Forwarded-Proto "https"

    ProxyPass /ws/ ws://192.168.99.100:8000/ws/
    ProxyPassReverse /ws/ ws://192.168.99.100:8000/ws/

    ProxyPass / http://192.168.99.100:8000/ retry=1 acquire=3000 timeout=600 Keepalive=On
    ProxyPassReverse / http://192.168.99.100:8000/
</VirtualHost>

我已经为 Drone 启用了重要的 Apache 模块:

  • mod_headers
  • mod_proxy
  • mod_proxy_http
  • mod_proxy_wstunnel

那么我该如何解决这个问题呢?


编辑:

我在https://drone.suriyaa.tk/http://192.168.99.100:8000/获得了相同的 HTML 内容:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<meta content="ie=edge" http-equiv="x-ua-compatible"/>
<script src="/cdn-cgi/apps/head/IS7ZAp3ID1yi0rZxe4CgzJCotFY.js"></script><script type="text/javascript">
//<![CDATA[
try{if (!window.CloudFlare) {var CloudFlare=[{verbose:0,p:0,byc:0,owlid:"cf",bag2:1,mirage2:0,oracle:0,paths:{cloudflare:"/cdn-cgi/nexp/dok3v=1613a3a185/"},atok:"650990d51d5b296f966a090423ea0b35",petok:"e2464cb008caccfc151874ac4f4f22d0e2b688b9-1500812575-1800",zone:"suriyaa.tk",rocket:"a",apps:{}}];document.write('<script type="text/javascript" src="//ajax.cloudflare.com/cdn-cgi/nexp/dok3v=85b614c0f6/cloudflare.min.js"><'+'\/script>');}}catch(e){};
//]]>
</script>
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"/>
<link href="/static/app.css" rel="stylesheet"/>
<link href="/static/favicon.ico" rel="icon" type="image/x-icon"/>
</head>
<body>
<div id="app"></div>
<script type="text/rocketscript">
  window.STATE_FROM_SERVER={"csrf":"","user":null};
</script>
<script data-rocketsrc="https://code.getmdl.io/1.1.3/material.min.js" type="text/rocketscript"></script>
<script data-rocketsrc="/static/app.js" type="text/rocketscript"></script>
</body>
</html>

这是我的浏览器的调试输出: 调试控制台(在 Firefox Aurora 中) 调试网络(在 Firefox Aurora 中)

我认为 Cloudflare 会阻止内容。


有用的资源

4

1 回答 1

0

drone-server您的 docker-compose 文件设置DRONE_HOST为的部分中

DRONE_HOST=drone.suriyaa.tk

此外,您应该DRONE_SERVER=ws://drone-server:8000/ws/broker在代理配置中使用。

于 2017-07-18T17:56:52.200 回答