ProxyPass: गैर-मानक पोर्ट के लिए निर्देशिका को पुनर्निर्देशित करें


13

मैं Google खोज रहा हूं और मुझे उत्तर खोजने में कोई सफलता नहीं मिली है। मैं Ubuntu पर एक सर्वर चला रहा हूं और मेरे पास ऐसे प्रोग्राम इंस्टॉल हैं जो विभिन्न गैर-मानक पोर्ट का उपयोग करते हैं। प्रत्येक एक अलग पोर्ट का उपयोग करता है, मेरे मामले में वे 9090, 9091, 9092, 9093 और 9094 हैं। मैंने एक अपाचे सर्वर स्थापित किया है और एक डोमेन नाम है जो अब मेरे आईपी पते में टाइप करने के बजाय मेरे सर्वर तक पहुंच सकता है। मैं जो खोज रहा हूं वह निर्देशिका बनाने का एक तरीका है जो मेरे द्वारा सूचीबद्ध विभिन्न बंदरगाहों को इंगित कर सकता है। मुझे कुछ चाहिए:

https://www.mydomain.com/app1
https://www.mydomain.com/app2
http://www.mydomain.com/app3

कुछ पोर्ट एसएसएल से अधिक हैं, कुछ नहीं हैं, मैंने सिर्फ उन्हें (9090-9094) अपने हिस्से पर उपयोग में आसानी के लिए रखा है। मैं SSL पोर्ट 9090 पर इंगित करने के लिए / app1 प्राप्त करना चाहता हूं, / app2 SSL पोर्ट 9091 को इंगित करने के लिए, और / app3 गैर-एसएसएल पोर्ट 9092 को इंगित करने के लिए। क्या ऐसा करने का एक सरल तरीका है? मैंने अन्य पोस्टों के आधार पर ProxyPass और लाइक जोड़ने की कोशिश की है लेकिन कुछ भी काम नहीं किया है। क्या मुझे एक नई साइट जोड़ने की आवश्यकता है?

इसके अलावा, अगर इसमें संपादन फ़ाइलें शामिल हैं, जो मुझे उम्मीद है कि यह बहुत सराहना की जाएगी यदि आप फ़ाइल के डिफ़ॉल्ट स्थान को सूचीबद्ध कर सकते हैं और चीजों को कहां जोड़ सकते हैं। मैं ProxyPass को जोड़ने के लिए पोस्टों को देखता रहा, इसलिए मैंने यह मान लिया कि यह VirtualHost के अंदर चला गया है, लेकिन मुझे पूरी तरह से यकीन नहीं था। असल में, मैं वेब सर्वर सेटअप के बारे में बहुत कम जानता हूं और मुझे इस तरह का व्यवहार करने की आवश्यकता है।

मैं किसी भी गलत टैग के लिए माफी माँगता हूँ और मैं आपके द्वारा पोस्ट पढ़ने के लिए लिए गए समय और आपके द्वारा प्रदान की जाने वाली किसी भी मदद की सराहना करता हूँ।

संपादित करें: स्पष्टीकरण के लिए, आवेदन पहले से ही सुलभ हैं https://www.mydomain.com:9090, आदि मैं https://www.mydomain.com/appNameउन अनुप्रयोगों द्वारा प्रकाशित एक ही स्थान / पृष्ठ पर पहुंचने के लिए उपयोग करना चाहूंगा ।

EDIT 2: / etc / apache2 / साइट्स से उपलब्ध / डिफ़ॉल्ट

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

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

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass /app1 https://localhost:9090/
    ProxyPassReverse /app1 https://localhost:9090/
</VirtualHost>

क्या आप कॉन्फ़िगरेशन निर्देशों का आउटपुट पोस्ट कर सकते हैं जिन्हें आपने इसे सेट करने के लिए उपयोग किया था? यदि वे एक vhost के अंदर हैं, तो क्या आप पूरे vhost को पोस्ट कर सकते हैं?
मार्कोस वेलाज़्केज़

क्या सेट करें? बंदरगाहों? बंदरगाहों को उनके संबंधित कार्यक्रमों के यूआई के माध्यम से स्थापित किया जाता है और मैं अपने सर्वर पर प्रत्येक एप्लिकेशन तक पहुंचने के दौरान बंदरगाहों में टाइप करने से बचने के लिए रास्ता खोज रहा हूं। मैं अनुप्रयोगों के माध्यम से खुदाई कर सकता हूं कि मुझे क्या मिल सकता है, लेकिन आमतौर पर पोर्ट केवल एक config.ini फ़ाइल में संग्रहीत होते हैं
सेर्नियम

नहीं, वह नही। मेरा मतलब था कि, यदि आप प्रॉक्सीपे और अन्य चीजों का उपयोग कर रहे हैं, तो आपने उन्हें एक vhost के अंदर रखा होगा, है ना? यदि हां, तो क्या आप संभव हो तो पूरी vhost सामग्री पोस्ट कर सकते हैं? यानी <VirtualHost 10.0.0.1:80 > ServerName server.domain.com DocumentRoot /usr/local/apache/htdocs </VirtualHost>
मार्कोस वेलाज़्केज़

मैंने मदद मांगने से पहले एक साफ स्लेट प्राप्त करने के लिए अपने अधिकांश परिवर्तनों को पूर्ववत कर दिया था। मैंने अभी-अभी / etc / apache2 / sites-available / default फाइल मेरे पास जोड़ी है और मैंने जो अंत में विभिन्न अन्य साइटों / खोजों पर देखा है, उसके आधार पर प्रॉक्सी सामान जोड़ा
सर्नियम

जवाबों:


13

सुनिश्चित करें कि निम्नलिखित अपाचे मॉड्यूल स्थापित और लोड किए गए हैं:

mod_proxy
mod_proxy_http
mod_ssl

आप निम्नलिखित कमांड को रूट के रूप में देख सकते हैं (httpd अपने $ पेट में है)

httpd -t -D DUMP_MODULES

बाद में, अपने कॉन्फ़िगरेशन को निम्न में बदलने का प्रयास करें:

ProxyRequests Off
<Proxy *>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Proxy>
SSLProxyEngine on
ProxyPass /app1 https://localhost:9090
ProxyPassReverse /app1 https://localhost:9090

यदि आप यात्रा करते हैं http://localhost/app1या http://mydomain.com/app1mydomain.com को लोकलहोस्ट की ओर इशारा करते हैं तो प्रॉक्सी को अब काम करना चाहिए ।


पहले की तरह ही समस्या, मुझे पता नहीं है कि mod_proxy कैसे स्थापित किया जाए और a2enmod mod_proxy कहता है कि mod_proxy मौजूद नहीं है। मैं देखता रहूंगा कि उन 3 मॉड्स को कैसे प्राप्त किया जाए ताकि मुझे काम करने के लिए चीजें मिल सकें। कहा जा रहा है, मेरे पास अभी प्रॉक्सी, प्रॉक्सी_एचटीपी और एसएसएल चल रहा है। यदि वे हैं जो मुझे चाहिए, तो यह समाधान अभी भी काम नहीं कर रहा है। मुझे एक निषिद्ध संदेश मिलता है, जो मुझे लगता है कि "127.0.0.1 से अनुमति दें" से संबंधित हो सकता है, लेकिन मैं पूरी तरह से निश्चित नहीं हूं
सर्नियम

साइड नोट, mydomain.com मेरे बाहरी आईपी की ओर इशारा करता है न कि लोकलहोस्ट के लिए। मैंने लोकलहोस्ट को बदलने की कोशिश की है: 9090 से मेरे आईपी: 9090 लेकिन कोई सफलता नहीं। क्या ProxyPass के सर्वर के सापेक्ष "अनुमति दें" और " लोकलहोस्ट " है या जो इसे एक्सेस करने का प्रयास कर रहा है, उसके सापेक्ष है?
सेर्नियम

इसे अस्थायी रूप से सभी से अनुमति लेकर काम कर लें। नकारात्मक पक्ष यह है कि पृष्ठ पर कोई सीएसएस आदि नहीं दिखाई देता है, लेकिन यह पूरी तरह से अलग मुद्दा है जिसे मैं अपने दम पर देखूंगा। धन्यवाद।
सरनेम

मुझे किस कॉन्फ़िगरेशन फ़ाइल में जोड़ने की आवश्यकता है ProxyRequests Off <Proxy *> Order deny,allow Deny from all Allow from 127.0.0.1 </Proxy> SSLProxyEngine on ProxyPass /app1 https://localhost:9090 ProxyPassReverse /app1 https://localhost:9090?
किलटेक

पृष्ठ की परिसंपत्तियाँ नहीं दिखना एक अलग मुद्दा नहीं हो सकता है। यहाँ ProxyPass निर्देश केवल दस्तावेज़ (app1) पर लागू होता है। अपनी सभी सामग्रियों के साथ App1 निर्देशिका को प्रॉक्सी करने के लिए, ट्रेलिंग स्लैश जोड़ें। ProxyPass /app1/ https://localhost:9090/और ProxyPassReverse के लिए भी यही प्रयोग किया जाता है। और दूसरी बात, RewriteRule ^/app1$ /app1/ [R]RewiteRule को पुनर्निर्देशित करें: जैसा कि / app1 तब अनुमानित नहीं होगा।
पापो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.