क्या मैं Apache में उसी VirtualHost में HTTP और HTTPS को परिभाषित कर सकता हूं?


13

मुझे काफी बड़ी VirtualHost परिभाषा मिली है, जिसे मैं डुप्लिकेट नहीं करना चाहता, इसलिए साइट HTTPS पर भी चलेगी।

यहाँ मैं क्या करना चाहता हूँ:

<VirtualHost *>
    ServerName example.com

    <If port=443>
        SSLEngine on
        SSLCertificateFile ...
        SSLCertificateKeyFile ...
        SSLCertificateChainFile ...
    </If>

    (other config)

</VirtualHost>

क्या ऐसा करने का कोई तरीका है?
क्या मुझे विन्यास की नक़ल नहीं करने का कोई और तरीका याद आ रहा है?

जवाबों:


12

Apache (2.2) के वर्तमान स्थिर संस्करण में वह सुविधा नहीं है, लेकिन 2.4 में IF निर्देश है

आपको अभी के लिए दो VirtualHosts बनाने हैं, लेकिन आप पर्यावरण या अपाचे वैश्विक चर के माध्यम से कुछ सामान सेट कर सकते हैं और इसका उपयोग अपने virtualhost config (उदाहरण के लिए डॉक्यूमेंट सेट करना) में कर सकते हैं। इस तरह यदि आप बदलना चाहते हैं कि आप इसे संशोधन की सिर्फ एक पंक्ति के साथ कर सकते हैं।

बेशक, आप कुछ ऐसा करने के लिए शामिल कर सकते हैं:

<VirtualHost *:80>
        include /etc/apache2/vhost.conf.d/site1
</VirtualHost>

<VirtualHost *:443>
        include /etc/apache2/vhost.conf.d/site1
        include /etc/apache2/vhost.conf.d/site1-ssl
</VirtualHost>

पीएस: आईपीवी 6 अनुकूलन से पहले एसएनआई मुख्यधारा के वर्ष होंगे । मुख्यधारा के ब्राउज़र के सभी यह समर्थन करते हैं कि आप पहले से ही एक समर्थित ओएस पर हैं।

संपादित करें: जैसा कि fooquency देखा गया है कि आप SSLEngine को एक ब्लॉक में नहीं डाल सकते हैं तो मेरा उत्तर गलत है।


8
वसीयत SSLEngine Onमें डालने का प्रयास कर रहा है , इसलिए इस उत्तर की शुरुआत में सुझाए गए उपयोग-मामले दुखद रूप से प्रकट नहीं होते हैं। ऐसा इसलिए लगता है क्योंकि आवश्यकता है कि "केवल निर्देश जो निर्देशिका संदर्भ का समर्थन करते हैं, इस कॉन्फ़िगरेशन अनुभाग में उपयोग किया जा सकता है।" (रेफरी) और है (रेफरी) , डायरेक्टरी नहीं। <If>SSLEngine not allowed hereSSLEngineserver config, virtual host
फुकुविसी

3

नहीं। आप अधिकांश चीज़ों को ग्लोबल कॉन्फिगर कर सकते हैं और इसे वर्चुअलीहॉस्ट में इनहेरिट कर सकते हैं।


1
दुर्भाग्य से मेरे पास कुछ VirtualHosts हैं, जिनमें से प्रत्येक को HTTP और HTTPS पर काम करने के लिए अलग-अलग कॉन्फ़िगरेशन और सबसे अधिक आवश्यकता है।
जेक

1
इस उत्तर के रूप में अनपेक्षित है, यह एकमात्र सही है। कृपया एक ऐसे वेब सर्वर पर जाएं जो चूसना नहीं करता है। :)
intgr

3

एक अन्य प्रश्न में इसका उत्तर दिया गया था। एक शामिल कथन का उपयोग करें। मेरे लिए एक जादू की तरह काम किया:

उसी VirtualHost पर http (पोर्ट 80) और https (पोर्ट 443) परोसें

# Acme Co
<VirtualHost 192.168.56.101:80>
        Include /usr/local/apache2/conf/main-acme.conf
</VirtualHost>

###* SSL
<VirtualHost 192.168.56.101:443>
        Include /usr/local/apache2/conf/main-acme.conf
        SSLEngine On
</VirtualHost>

2

एसएसएल वर्चुअल होस्ट के लिए, आपको या तो दूसरे पोर्ट अला का उपयोग करना होगा

<VirtualHost *:443>
    ServerName abc.com
</VirtualHost>
<VirtualHost *:4443>
    Servername def.com
</VirtualHost>

या आपको अलग-अलग आईपी का उपयोग करना होगा

<VirtualHost 192.168.0.1:443>
    ServerName abc.com
</VirtualHost>
<VirtualHost 192.168.0.2:443>
    Servername def.com
</VirtualHost>

Apache SSL डॉक्स http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html में बहुत अच्छी व्याख्या है।

"मैं नाम-आधारित / गैर-आईपी-आधारित वर्चुअल होस्ट के साथ SSL का उपयोग क्यों नहीं कर सकता?"


2
भविष्य के लिए इसके बारे में अवगत रहें, हालांकि: en.wikipedia.org/wiki/Server_Name_Indication
mattdm

विडंबना यह है कि जब तक एसएनआई व्यापक रूप से वर्चुअल होस्टिंग साइटों के बहुमत के लिए सुरक्षित रूप से उपयोग करने के लिए पर्याप्त रूप से स्वीकार नहीं किया जाता है, तब तक आईपीवी 6 संभवतः अप्रासंगिक बनाने के लिए पर्याप्त सामान्य होगा।
jgoldschrafe

4
@jgoldschrafe हाय 2010, यह यहाँ भविष्य बोल रहा है! हालिया कैनीयूज़ दिखाता है कि गैर- एसएनआई ब्राउज़र दुनिया भर में <2% हैं। पहली दुनिया से यह शायद बहुत कम है। IPv4 अभी भी जीवित है और अच्छी तरह से :)
kubanczyk

2
@kubanczyk मुझे मिल गया! :)
jgoldschrafe

@jgoldschrafe यहां तक ​​कि आईपीवी 6 के साथ मैं अभी भी एसएनआई को एक मशीन पर पते के ब्लॉक प्रदान करने से पहले बताऊंगा, क्योंकि आईपी मुख्य रूप से रूटिंग के लिए हैं और इस तरह से प्रबंधन करना आसान है।
बछसौ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.