Apache无法通过ProxyPass显示Drone

问题

我跟着这个无人机安装教程,但我没有设法使用Apache服务器正确设置无人机CI:

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

截图

在Windows 10的Docker快速入门terminal下的debugging模式下, drone-agent_1的输出:

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

无人机完美的IP:

无人机下的IP

但无人机无法在域名地址下使用Apache进行显示:

无人机在域名地址下


有关configuration的信息

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下的我的虚拟主机configuration:

 <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> 

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

我认为Cloudflare会阻止内容。


有用的资源

  • https://support.cloudflare.com/hc/en-us/articles/219304477
  • https://support.cloudflare.com/hc/en-us/articles/203564960
  • https://support.cloudflare.com/hc/en-us/articles/217471977

DRONE_HOST -compose文件的drone-server部分设置DRONE_HOST

 DRONE_HOST=drone.suriyaa.tk 

另外,您应该在代理configuration中使用DRONE_SERVER=ws://drone-server:8000/ws/broker