मैं अपाचे वेब सर्वर को दो अलग-अलग बंदरगाहों पर कैसे सुनूं?


45

मुझे अपाचे वेब सर्वर पसंद है जिसे मैंने पोर्ट 80 और पोर्ट 8080 पर सुनने के लिए घर पर स्थापित किया है।

मैंने Listen 8080httpd.conf में जोड़ा है और अपाचे सेवाओं को फिर से शुरू किया है, लेकिन सर्वर 8080 पर नहीं सुना जा रहा है। http: // localhost में पंचिंग : 8080 बार बाहर और मेरे index.html प्रदर्शित नहीं करता है, लेकिन http: / / localhost मेरा index.html प्रदर्शित करेगा।

मैं इसे 80 और 8080 कैसे सुनूं?


आपको क्यों लगता है कि यह 8080 पोर्ट पर नहीं सुन रहा है? यह आपके कॉन्फ़िगरेशन के स्निपेट पोस्ट करने के लिए भी उपयोगी हो सकता है।
डेविड जेड

1
क्या आपने http.conf को संपादित करने के बाद अपाचे को फिर से शुरू किया?
द सना

@ डेविड मैंने अपने प्रश्न को अपडेट करने के लिए अपडेट किया है कि मुझे क्यों लगता है कि यह 8080 पर नहीं सुन रहा है। अभी httpd.conf तक पहुंच नहीं है। @ दाना - हाँ।
उल्लू

जवाबों:


63

अपाचे के एक मानक डेबियन इंस्टॉलेशन में कॉन्फ़िगरेशन के निम्नलिखित अंश होंगे:

सुनें 80

<IfModule mod_ssl.c>
    # SSL नाम आधारित वर्चुअल होस्ट अभी तक समर्थित नहीं हैं, इसलिए नहीं
    # NameVirtualHost बयान यहाँ
    443 सुनो
</ IfModule>

यह अपाचे को पोर्ट 80 पर सुनने के लिए और 443 को पोर्ट को सुनने के लिए कह रहा है यदि mod_ssl कॉन्फ़िगर किया गया है। अपने मामले में आप चाहते हैं:

Listen 80
Listen 8080

आपको यह सुनिश्चित करने की आवश्यकता है कि आप पुनः आरंभ करें, इसके लिए एपाचे पर पुनः लोड ऑपरेशन नहीं, इसके लिए नए सुनने के निर्देशों पर ध्यान दें। सबसे सुरक्षित काम अपाचे को रोकना है, सुनिश्चित करें कि यह मर चुका है और इसे फिर से शुरू करें।

यदि यह कॉन्फ़िगरेशन काम नहीं करता है, तो किसी भी त्रुटि संदेश के लिए लॉग फ़ाइलों की जाँच करें। यदि आप पोर्ट 8080 पर कुछ भी सुन रहे हैं तो यह देखने के लिए आप "netstat -lep --tcp" का उपयोग कर सकते हैं। अंत में, यदि बाकी सब काम नहीं करता है, तो स्ट्रेस के तहत अपाचे चलाने की कोशिश करें यह देखने के लिए कि क्या वह उस पोर्ट से बंधने की कोशिश कर रहा है और असफल हो रहा है, लेकिन समस्या लॉग नहीं है।


1
अपाचे 2.4 में यह विन्यास टुकड़ा कहां पाया जा सकता है? धन्यवाद।
लुइस डी सूसा

2
मेरे अपने प्रश्न का उत्तर देना: /etc/apache2/ports.conf
लुइस डी सूसा

7

ये उत्तर बहुत अच्छे हैं, लेकिन वे इस संभावना को छोड़ देते हैं कि ओवेन ने वास्तव में यह पहले ही कर दिया है ("मैंने जोड़ा है Listen 8080") का अर्थ वास्तव में यह हो सकता है कि यह कैसा लगता है (यानी, डेविड ने क्या सुझाव दिया है)।

यदि आपने पहले ही ऐसा कर लिया है और अभी भी यह काम नहीं कर रहा है, तो सुनिश्चित करें कि आपने अपने उप-डोमेन के लिए अपने निर्देशों को सही ढंग से कॉन्फ़िगर किया है, जिसमें डिफ़ॉल्ट एक भी हो सकता है (यदि यह नाम सुनने के लिए मैन्युअल रूप से कॉन्फ़िगर किया गया है: नाम के ठीक बाद 80)।

आप शायद इस तरह एक निर्देश है:

<VirtualHost *:80>
 ServerName michaelsanford.com
 etc…
</VirtualHost>

आपको इसे <VirtualHost *:8080>या में बदलना होगा <VirtualHost *:*>


मुझे संदेह है कि यह मेरी समस्या है। मुझे लगता है कि एक <VirtualHost *: 80> निर्देश है। मुझे यह जांचना होगा।
ओवेन

1
यदि आपके पास एक वर्चुअल होस्ट नहीं है, तो आपको वैश्विक डॉक्यूमेंटRoot से कंटेंट परोसा जाएगा, जो संभवतः आपको एक मानक index.html, डायरेक्टरी इंडेक्स पेज, 404 या 403 त्रुटि देगा। यह समय समाप्त नहीं होगा।
डेविड पशले

2
लगता है जैसे आपके पास एक फ़ायरवॉल है जो पैकेट को चुपचाप छोड़ रहा है।
एमएसनफोर्ड

जैसा कि यह पता चला है, यह एक फ़ायरवॉल मुद्दा था।
ओवेन

5

चरण 1

#vi httpd.conf
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

http_ssl को पोर्ट 80 पर सुनने के लिए और अगर mod_ssl कॉन्फ़िगर किया गया है तो पोर्ट 443 को सुनने के लिए।

Listen 80
Listen 8080

चरण 2

#su - service httpd restart

चरण 3

$ netstat -lntp

(सभी प्रक्रियाओं की पहचान नहीं की जा सकती है, गैर-स्वामित्व वाली प्रक्रिया जानकारी नहीं दिखाई जाएगी, आपको यह सब देखने के लिए मूल होना होगा।)

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:47027               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 192.168.1.1:80              0.0.0.0:*                   LISTEN      -                   
tcp        0      0 192.168.1.1:8080            0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      -                   
tcp        0      0 ::ffff:127.0.0.1:45100      :::*                        LISTEN      3149/java           
tcp        0      0 :::111                      :::*                        LISTEN      -                   
tcp        0      0 :::80                       :::*                        LISTEN      -                   
tcp        0      0 :::57173                    :::*                        LISTEN      3149/java           
tcp        0      0 :::18197                    :::*                        LISTEN      3149/java           
tcp        0      0 :::22                       :::*                        LISTEN      -                   
tcp        0      0 ::1:631                     :::*                        LISTEN      -                   
tcp        0      0 :::40832                    :::*                        LISTEN      3149/java           
tcp        0      0 ::ffff:127.0.0.1:6880       :::*                        LISTEN      3149/java       

0

आप यह देखने के लिए भी जांच कर सकते हैं कि आपके पास SELinux सक्षम है या नहीं। डिफ़ॉल्ट SELinux कॉन्फ़िगरेशन आपको अपाचे को गैर-मानक पोर्ट पर चलाने की अनुमति नहीं दे सकता है। यहां एक साइट है जो आपको दिखाती है कि क्या आप SELinux चला रहे हैं और इसे कैसे निष्क्रिय करना है, यदि आप इसकी सुविधाओं का उपयोग नहीं करना चाहते हैं या इसका उपयोग नहीं करना चाहते हैं। http://www.crypt.gen.nz/selinux/disable_selinux.html


या आप SELinux को छोड़ सकते हैं, यदि आप एक आधुनिक SELinux सिस्टम पर हैं, तो देखें कि पोर्ट्स को सीमेन पोर्ट -l के साथ कैसे लेबल किया जाता है। danwalsh.livejournal.com/9275.html देखें , जिसका शीर्षक है "मैं चाहता हूं कि मेरा अपाचे डेमॉन एक अलग पोर्ट पर सुनें लेकिन SELinux इसे रोक रहा है, मैं क्या करूं?"
संशोधित करें

0

काम करने के लिए आपको साइट 8080 पोर्ट को कॉन्फ़िगर करने की आवश्यकता हो सकती है। अपाचे वर्चुअल होस्ट के लिए प्रलेखन के माध्यम से पढ़ें । प्रत्येक 'साइट' को विशिष्ट बंदरगाहों (और आईपी, आदि) पर कनेक्शन स्वीकार करने के लिए स्थापित किया जा सकता है। क्या आपके पास अपने http.conf में एक वर्चुअल होस्ट है जो केवल पोर्ट 80 के लिए कॉन्फ़िगर किया गया है?

इसके अलावा, आप पुष्टि कर सकते हैं कि सर्वर 8080 का उपयोग करके सुन रहा है netstat -nlpऔर उस पोर्ट पर एक प्रविष्टि की तलाश कर रहा है।


1
नहीं, यह सही नहीं है। यदि आप एक बंदरगाह पर सुनने के लिए अपाचे चाहते हैं, तो आपको सुनने के निर्देश का उपयोग करने की आवश्यकता है।
डेविड पशले


1
ठीक है, यह कुछ हद तक सही हो सकता है - बहुत से लोग vhosts को <VirtualHost *: 80> की तरह बनाते हैं, और उस स्थिति में आपको इसे <VirtualHost *: *> में बदलना होगा या पोर्ट 8080 के लिए एक और vhost बनाना होगा। (ज़ाहिर है, सुनो निर्देश भी आवश्यक है)
डेविड जेड

@ डेविड पशले, लेखक ने कहा कि सुनो निर्देश पहले ही जोड़ दिया गया था।
द साने

0

मान लें कि लिनक्स netstat -lntpको रूट के रूप में चलाते हैं, तो आप देख सकते हैं कि अपाचे 8080 पर सुन रहा है या नहीं। यह आपको यह पहचानने में मदद करेगा कि क्या समस्या अपाचे नहीं सुन रही है या यदि कनेक्शन समय से बाहर करने के लिए अपाचे के कारक बाहरी (जैसे फ़ायरवॉल, सेलिनक्स आदि) हैं।

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