2016-01-22 4 views
2

Я столкнулся с проблемой, которая кажется довольно распространенной, исходя из моих поисков, однако я следил за всеми инструкциями и/или исправлениями, с которыми я столкнулся, но никто не работал для меня поэтому я прошу этого надеяться, что кто-то может вести меня в правильном направлении.Ошибка обратного прокси Jenkins/Apache

У меня есть Jenkins 1.644, установленный на OS X 10.11.2 от Homebrew. Я последовал за these инструкциями по установке и настройке внутри OS X Server 5.0.15. Сайты (я считаю, что в этой версии сервера OS X работает Apache 2.4.16.

Проблема: когда я подключаюсь к консоли управления в Дженкинс, я получаю сообщение об ошибке «оказывается, что ваш обратный прокси настроить сломана.» и ссылку на this jenkins doc.

задерживаясь http://127.0.0.1:8080/manage не вызывает ошибку.

Я добавил настройки прокси-сервера мой файл виртуального хоста следующим образом:

ProxyRequests  Off 
ProxyPreserveHost On 
AllowEncodedSlashes NoDecode 

<Proxy *> 
    Order deny,allow 
    Allow from all 
</Proxy> 

ProxyPass/http://localhost:8080/ nocanon 
ProxyPassReverse/http://localhost:8080/ 
ProxyPassReverse/http://jenkins.exampledomain.com/ 

RequestHeader set X-Forwarded-Proto "https" 
RequestHeader set X-Forwarded-Port "443" 

Когда я делаю тест завиток:

curl -iLk -e https://jenkins.exampledomain.com/manage \ 
    https://jenkins.exampledomain.com/administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/test 

я получаю следующие результаты:

HTTP/1.1 302 Found 
Date: Fri, 22 Jan 2016 06:30:57 GMT 
Server: Jetty(winstone-2.9) 
X-Content-Type-Options: nosniff 
Location: https://jenkins.exampledomain.com/administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/testForReverseProxySetup/https%3A%2F%2Fjenkins.exampledomain.com%2Fmanage/ 
Content-Length: 0 
MS-Author-Via: DAV 

HTTP/1.1 404 Not Found 
Date: Fri, 22 Jan 2016 06:30:57 GMT 
Server: Apache/2.4.16 (Unix) OpenSSL/0.9.8zg 
Content-Length: 325 
Content-Type: text/html; charset=iso-8859-1 

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>404 Not Found</title> 
</head><body> 
<h1>Not Found</h1> 
<p>The requested URL /administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/testForReverseProxySetup/https://jenkins.exampledomain.com/manage/ was not found on this server.</p> 
</body></html> 

Очевидно, что адрес на этом сервере, потому что я могу войти в консоль управления, перейдя по правильному адресу ,

Я застрял ... Конфигурация Apache не моя сильная сторона. Я ищу любую помощь.

--edit Больше Info--

Добавление полный виртуальный хост-файл из Интернета// каталог/Library/Server/Config/apache2 сайтов для дальнейшей детализации.

<VirtualHost 127.0.0.1:34543> 
    ServerName https://jenkins.exampledomain.com:443 
    ServerAdmin [email protected] 
    DocumentRoot "/Library/Server/Web/Data/Sites/jenkins.exampledomain.com" 
    DirectoryIndex index.html index.php default.html 
    CustomLog /var/log/apache2/access_log combinedvhost 
    ErrorLog /var/log/apache2/error_log 
    <IfModule mod_ssl.c> 
     SSLEngine On 
     SSLCipherSuite "ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM" 
     SSLProtocol -ALL +TLSv1 
     SSLProxyEngine On 
     SSLCertificateFile "/etc/certificates/machine.local.certCA1FileLocation.pem" 
     SSLCertificateKeyFile "/etc/certificates/machine.local.certCA2FileLocation.key.pem" 
     SSLCertificateChainFile "/etc/certificates/machine.local.certCA3FileLocation.chain.pem" 
     SSLProxyProtocol -ALL +TLSv1 
     SSLProxyCheckPeerCN off 
     SSLProxyCheckPeerName off 
    </IfModule> 
    <Directory "/Library/Server/Web/Data/Sites/jenkins.exampledomain.com"> 
     Options All -Indexes -ExecCGI -Includes +MultiViews 
     AllowOverride None 
     <IfModule mod_dav.c> 
      DAV Off 
     </IfModule> 
     <IfDefine !WEBSERVICE_ON> 
      Require all denied 
      ErrorDocument 403 /customerror/websitesoff403.html 
     </IfDefine> 
    </Directory> 

    ProxyRequests  Off 
    ProxyPreserveHost On 
    AllowEncodedSlashes NoDecode 

    <Proxy *> 
     Order deny,allow 
     Allow from all 
    </Proxy> 

    ProxyPass/http://localhost:8080/ nocanon 
    ProxyPassReverse/http://localhost:8080/ 
    ProxyPassReverse/http://jenkins.exampledomain.com/ 

    RequestHeader set X-Forwarded-Proto "https" 
     RequestHeader set X-Forwarded-Port "443" 
</VirtualHost> 

--edit 2 Другой Finding--

Я заметил, пытаясь свернуться к «не нашел» URL выше, что на самом деле сервер отчетов не найден. Если я удалю https://jenkins.exampledomain.com/manage/, я получу 404. Однако, если я отойду от трейлинга /, он будет работать. https://jenkins.exampledomain.com/manage Успешно. Надеюсь, это что-то значит для кого-то!

Благодаря

ответ

1

Я знаю, что это старый вопрос, но у меня была та же проблема с ошибкой:

HTTP ERROR 404 

Problem accessing /administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/testForReverseProxySetup/https%3A%2F%2Fbuild.scopeitconsulting.com%2Fmanage/. Reason: 

http://build.domain.com/manage vs. https://build.domain.com/manage 

Я был в состоянии решить мою проблему, в том числе две линии от автора вопрос:

RequestHeader set X-Forwarded-Proto "https" 
RequestHeader set X-Forwarded-Port "443" 

Итак, вот мой соответствующий раздел из рабочей конфигурации ssl.conf, если он кому-то помогает. Я запускаю Jenkins на порту 8080 в корневом контексте с http, но обратный прокси-сервер за Apache, обеспечивающий https.

ProxyPass    /http://localhost:8080/ nocanon 
ProxyPassReverse  /http://localhost:8080/ 
ProxyPassReverse  /http://build.domain.com/ 
ProxyPassReverse  /https://build.domain.com/ 
ProxyRequests   Off 
ProxyPreserveHost  On 
AllowEncodedSlashes  NoDecode 
RequestHeader set X-Forwarded-Proto "https" 
RequestHeader set X-Forwarded-Port "443" 
<Proxy http://localhost:8080/> 
Order deny,allow 
Allow from all 
</Proxy> 

Я надеюсь, что это помогает кому-то, кто любит меня потратил слишком много времени, пытаясь найти рабочую конфигурацию, чтобы устранить ошибку.