जेनकींस और सोनार के लिए एसएसएल के साथ सही अपाचे रिवर्स प्रॉक्सी कॉन्फ़िगरेशन


11

मैं एक अपाचे सर्वर के पीछे दो सेवाएं चला रहा हूं: जेनकिंस (पोर्ट 8080) और सोनारक्यूब (पोर्ट 9000)।

मेरा अपाचे विन्यास इस तरह दिखता है:

<VirtualHost *:80>
  ServerName server
  Redirect permanent / https://server.domain.com/
</VirtualHost>

<VirtualHost *:80>
  ServerName server.domain.com
  Redirect permanent / https://server.domain.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName server.domain.com

  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/server.crt
  SSLCertificateKeyFile /etc/ssl/private/server.key

  ProxyPass        /jenkins http://localhost:8080/jenkins nocanon
  ProxyPassReverse /jenkins http://localhost:8080/jenkins
  ProxyPassReverse /jenkins http://server.domain.com/jenkins
  ProxyPassReverse /jenkins https://server.domain.com/jenkins

  ProxyPass        /sonar http://localhost:9000/sonar nocanon
  ProxyPassReverse /sonar http://localhost:9000/sonar

  AllowEncodedSlashes NoDecode
  ProxyRequests Off
  ProxyPreserveHost On
  <Proxy http://localhost:8080/*>
    Order deny,allow
    Allow from all
  </Proxy>
</VirtualHost>

लगता है कि सब कुछ ठीक काम कर रहा है, सिवाय इसके कि जेनकिंस इस संदेश के साथ शिकायत कर रहा है: ऐसा प्रतीत होता है कि आपका रिवर्स प्रॉक्सी सेट टूट गया है।

जब मैं जेनकिन्स द्वारा प्रदान ReverseProxySetupMonitor परीक्षण चलाते हैं , तो त्रुटि संदेश इंगित करता है कि रिवर्स प्रॉक्सी के साथ कुछ सही तरीके से सेट नहीं किया गया है, क्योंकि http को https के साथ प्रतिस्थापित नहीं किया जाता है:

$ curl -iLk -e https://server.domain.com/jenkins/manage https://server.domain.com/jenkins/administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/test
[...]
404 http://server.domain.com/jenkins/manage vs. https://server.domain.com/jenkins/manage
[...]

यह केवल सर्वर पर SSL सक्षम करने के बाद दिखाई दिया (जो अब स्व-हस्ताक्षरित प्रमाण पत्र का उपयोग कर रहा है)।

प्रश्न: मैं रिवर्स प्रॉक्सी सेटअप कैसे ठीक करूं ताकि जेनकिंस खुश हो? Apache config फाइल को कैसे बेहतर बनाया जाए, इसके टिप्स के लिए बोनस अंक।

मैंने पहले ही संबंधित दो प्रश्नों की जाँच कर ली है:

जवाबों:


9

विकी जेनकिंस के इस पेज में उल्लेख किया गया है कि जुलाई 2014 के अनुसार , जेनकिंस रिवर्स प्रॉक्सी के लिए अनुशंसित कॉन्फ़िगरेशन। लापता पैरामीटर है RequestHeader set X-Forwarded-Proto "https"औरRequestHeader set X-Forwarded-Port "443"

तो विन्यास बन गया

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/cert.pem
    ServerAdmin  webmaster@localhost
    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://www.example.com/
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Port "443"
</VirtualHost>

2
बहुत बढ़िया, यह पूरी तरह से काम! मुझे भी करना था sudo a2enmod headers, नहीं तो मुझे मिल जाताInvalid command 'RequestHeader'
तला हुआ

क्या आप बता सकते हैं कि आप ProxyPassReverseएक ही मार्ग ( /) के लिए दो निर्देशों का उपयोग क्यों कर रहे हैं ?
ओरतोमला लोकनी

1

जेनकींस के लिए विंडोज अपाचे फ्रंट-एंड सेटअप

यहाँ मुख्य अंतर हैं:

  • अस्थायी प्रमाणपत्र कैसे स्थापित करें
  • किसी भी ssl कैश नहीं होने के बारे में अपाचे विंगिंग को रोकना

मेरा सेटअप:

  • स्थापित करना था: d: \ (नहीं c: \ - इसे अपनी आवश्यकताओं के अनुकूल करें)

  • जेनकिंस बंदरगाह 8080 पर है

  • अनज़िप अपाचे httpd-2.4.18-win64-VC14.zip ( http://www.apachelounge.com/download/ से ) d: \।

  • OpenSSL Win64OpenSSL_Light-1_0_2f.exe ( http://slproweb.com/products/Win32OpenSSL.html ) को d: \ OpenSSL-Win64 में स्थापित करें

  • Ssl प्रमाणपत्र बनाएं:

    • OpenSSL बिन निर्देशिका के लिए सीडी और जादू चलाने:

       pushd d:\OpenSSL-Win64\bin
       set OPENSSL_CONF=openssl.cfg
       openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt
      
  • सर्वर की प्रतिलिपि बनाएँ। * d: \ OpenSSL-Win64 \ bin से D: \ Apache24 \ conf की फाइलें

  • संपादित करें d: \ Apache24 \ conf \ httpd.conf:

    • "D: /" के साथ "c: /" खोजें और बदलें

    • "सुनो 803" को जोड़ने वाली लाइन "80 सुनो" के बाद बदलें:

      Listen 80
      Listen 443
      
    • इन पंक्तियों को रद्द करें:

      LoadModule headers_module modules/mod_headers.so
      LoadModule proxy_module modules/mod_proxy.so
      LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
      LoadModule proxy_http_module modules/mod_proxy_http.so
      LoadModule rewrite_module modules/mod_rewrite.so
      LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
      LoadModule ssl_module modules/mod_ssl.so
      LoadModule vhost_alias_module modules/mod_vhost_alias.so
      
    • अद्यतन "#ServerName www.example.com:80":

      ServerName myserver.mydomain:80
      
    • इसे अंत में जोड़ें:

      <IfModule socache_shmcb_module>
      SSLSessionCache "shmcb:logs/ssl_scache(512000)"
      </IfModule>
      
      <VirtualHost *:80>
        ServerName myserver
        Redirect permanent / https://myserver.mydomain/
      </VirtualHost>
      
      <VirtualHost *:80>
        ServerName myserver.mydomain
        Redirect permanent / https://myserver.mydomain/
      </VirtualHost>
      
      <VirtualHost *:443>
                  SSLEngine on
                  SSLCertificateFile conf/server.crt
                  SSLCertificateKeyFile conf/server.key
                  ServerAdmin  me@mydomain
                  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://myserver.mydomain/
                  RequestHeader set X-Forwarded-Proto "https"
                  RequestHeader set X-Forwarded-Port "443"
      </VirtualHost>
      

मैंने 8080 पोर्ट पर सुनने वाले जेनकिंस को नहीं रोका, इसलिए मैं अभी भी कनेक्ट कर सकता हूं अगर एपाचे विफल हो जाते हैं। Https का उपयोग करने में मेरा उद्देश्य मापदंडों को छिपाना है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.