2011-02-16 15 views
29

के साथ अपाचे रिवर्स प्रॉक्सी मेरे बैक एंड सर्वर पर यातायात को आगे बढ़ाने से पहले मूलभूत प्रमाणीकरण के साथ मेरी रिवर्स प्रॉक्सी को कॉन्फ़िगर करने का प्रयास कर रहा है। क्या कोई मुझे समाधान दे सकता है।बुनियादी प्रमाणीकरण

यहाँ उदाहरण:

उपयोगकर्ता (इंटरनेट) -> रिवर्स प्रॉक्सी/vhosts सर्वर (यहां बुनियादी प्रमाणीकरण जोड़ने की जरूरत है) -> वापस अंत सर्वर (गैर प्रमाणित)

उत्तर

50

आप निर्देश यहां का पालन कर सकते हैं: Authentication, Authorization और Access Control। अपने रिवर्स प्रॉक्सी के लिए मुख्य अंतर यह है कि आप एक स्थान ब्लॉक के अंदर प्रमाणन सामान डाल करने के लिए भले ही डॉक्स का कहना है कि वे केवल निर्देशिका ब्लॉक में अनुमति हो चाहता हूँ, यह है:

<Location /> 
    AuthType Basic 
    ... 
</Location> 

बाहर स्थान ब्लॉक आप जैसे आपके प्रॉक्सी आदेश, रख सकते हैं:

ProxyPass/http://localhost:8080/ 
+0

हाँ, तो यह और भी रिवर्स प्रॉक्सी के साथ काम करता है अपने रिवर्स प्रॉक्सी संपादित करें। रिकॉर्ड के लिए – lzap

+1

[doc] (http://httpd.apache.org/docs/2.2/mod/directive-dict.html#Context) इंगित करता है कि यह इस संदर्भ में कार्य करता है। "निर्देशिका एक निर्देश इस संदर्भ में मान्य किया जा रहा है के रूप में चिह्नित , , के अंदर इस्तेमाल किया जा सकता है, और सर्वर विन्यास फाइलों में कंटेनर, विन्यास धारा में उल्लिखित प्रतिबंधों के अधीन।" – Pete

16

यहाँ config मैं डेटाबेस के आधार पर https पर बुनियादी प्रमाणीकरण पूरा करने के लिए इस्तेमाल किया है है। मेरा बैकएंड सर्वर टॉमकैट चला रहा है और मैं एजेपी का उपयोग करके उससे कनेक्ट हूं। मजेदार पोर्ट नंबर (4443) इसलिए है क्योंकि मानक पोर्ट (443) पहले से ही उपयोग किया गया था, और मैं उसी पोर्ट पर कई https सेवाओं को कॉन्फ़िगर नहीं करना चाहता था।

<IfModule mod_ssl.c> 
NameVirtualHost *:4443 
<VirtualHost *:4443> 
     ServerAdmin [email protected] 
     ServerName ws.myserver.se 
     ServerAlias ws.myserveralias.se 
     ErrorLog /var/log/apache2/ajpProxy.error.log 

     # Possible values include: debug, info, notice, warn, error, crit, 
     # alert, emerg. 
     LogLevel info 

     CustomLog /var/log/apache2/ajpProxy.log combined 

     DBDriver mysql 
     DBDParams "host=127.0.0.1 port=3306 user=proxyAuthUser pass=yourDbPasswordHere dbname=yourDbName" 
     DBDMin 4 
     DBDKeep 8 
     DBDMax 20 
     DBDExptime 300   

     <Proxy *> 
       # core authentication and mod_auth_basic configuration 
       # for mod_authn_dbd 
       AuthType Basic 
       AuthName "Backend auth name" 
       AuthBasicProvider dbd 

      # core authorization configuration 
       Require valid-user 

       # mod_authn_dbd SQL query to authenticate a user 
       AuthDBDUserPWQuery \ 
       "SELECT password FROM user WHERE emailAddress = %s" 

       AddDefaultCharset Off 
       Order deny,allow 
       Allow from all 
     </Proxy> 

     ProxyPass/ajp://localhost:8009/ 
     ProxyPassReverse/ajp://localhost:8009/ 

     # SSL Engine Switch: 
     # Enable/Disable SSL for this virtual host. 
     SSLEngine on 

     # A self-signed (snakeoil) certificate can be created by installing 
     # the ssl-cert package. See 
     # /usr/share/doc/apache2.2-common/README.Debian.gz for more info. 
     # If both key and certificate are stored in the same file, only the 
     # SSLCertificateFile directive is needed. 
     SSLCertificateFile /etc/apache2/ssl/yourCertificateFile.crt 
     SSLCertificateKeyFile /etc/apache2/ssl/yourPrivateKeyFile.key 
     <FilesMatch "\.(cgi|shtml|phtml|php)$"> 
       SSLOptions +StdEnvVars 
     </FilesMatch> 
     <Directory /usr/lib/cgi-bin> 
       SSLOptions +StdEnvVars 
     </Directory> 

     BrowserMatch "MSIE [2-6]" \ 
       nokeepalive ssl-unclean-shutdown \ 
       downgrade-1.0 force-response-1.0 
     # MSIE 7 and newer should be able to use keepalive 
     BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown 
</VirtualHost> 
</IfModule> 
2

पहले, जांच लें कि आपका apache2 utils संकुल

sudo apt-get install apache2-utils 

है फिर, उपयोगकर्ता नाम और पासवर्ड की स्थापना की।

sudo htpasswd -c /etc/apache2/.htpasswd <username> 

उसके बाद, प्रमाणीकरण का उपयोग करने के लिए

<VirtualHost *:80> 
    ProxyPreserveHost On 

    ProxyPass/http://someaddress:1234/ 
    ProxyPassReverse/http://someaddress:1234/ 

    Timeout 5400 
    ProxyTimeout 5400 

    ServerName dev.mydomain.com 
    ServerAlias *.dev.mydomain.com 

    <Proxy *> 
     Order deny,allow 
     Allow from all 
     Authtype Basic 
     Authname "Password Required" 
     AuthUserFile /etc/apache2/.htpasswd 
     Require valid-user 
    </Proxy> 
</virtualhost> 

कम से कम, अद्यतन अपने अपाचे

sudo service apache2 reload 
संबंधित मुद्दे