अपाचे को केवल 127.0.0.1 के माध्यम से सुलभ बनाएं, क्या यह संभव है?


19

मैंने अपना Apache सर्वर सेट किया है, और PHP / MySQL अच्छी तरह से काम करता है!

लेकिन मुद्दा यह है कि मैं इसे निजी कैसे रख सकता हूं, क्योंकि यह केवल विकास का सर्वर है? सामग्री को निजी रखने का एकमात्र कारण यह है कि यदि कोई स्क्रिप्ट गलत हो गई है, तो मैं नहीं चाहता कि अपाचे त्रुटियां दिखाई दे रही हैं यदि यह एक सार्वजनिक-सामना करने वाली साइट बन गई (और तथ्य यह है कि अन्य लोग भी उसी नेटवर्क को साझा करते हैं!), और मैं कम हूँ मेरे पीसी को एक वेबहोस्ट के रूप में उपयोग करने की संभावना - मैं वास्तविक लाइव साइट के लिए वेबहोस्टिंग प्रदाता मार्ग का उपयोग करके नीचे जाने की अधिक संभावना है।

वर्तमान में मैं इसे तीन तरीकों से एक्सेस कर सकता हूं:

  • http: // localhost (या http://127.0.0.1 , वैकल्पिक तरीका और लोकलहोस्ट का आईपी लेकिन मेरे साथ या तो रास्ता स्वीकार्य है!)

  • http 192.168.0.1 (मेरे राउटर का आईपी)

  • http PC-name-here (मेरे पीसी का नाम, जाहिर है कि यह विंडोज पीसी के बीच भिन्न होता है!)

[ध्यान दें, लिंक पोस्ट नहीं कर सकते हैं, इसलिए अन्य दो के लिए आपको पहले एक के रूप में कोलन / फ़ॉरवर्ड स्लैश सम्मिलित करना होगा]।

हालांकि, मैं केवल पहले एक के माध्यम से इसे एक्सेस करना चाहता हूं। यह पोर्ट 80 पर सुन रहा है (और मैं इसे बदलना नहीं चाहता)। क्या यह संभव नहीं है, या क्या मुझसे गलती हुई है? मैं चीजों के नेटवर्क पक्ष की तुलना में PHP / webdesign के बारे में थोड़ा अधिक जानता हूं, इसलिए यह मेरे लिए पहला है!

मूल रूप से, मैं चाहता हूं कि यह केवल उस मशीन पर लोकलहोस्ट के माध्यम से सुलभ हो, न कि बाहरी आईपी पते या 192.168.0.1 पर।

क्या मुझे httpd.conf को संपादित करने और हर परीक्षण किए गए साइट पर इनकार का उपयोग करने की आवश्यकता होगी, या कोई अन्य समाधान है?

उदाहरण:

<Directory /www/vhosts/localhost/>
    Options All
    AllowOverride All
    order allow,deny
    allow from 127.0.0.1
            deny from 192.168.0.1
            deny from my-pc-name
</Directory>
  • यह एक उदाहरण है, लेकिन मुझे यकीन नहीं है कि यहाँ क्या सही है या गलत है!

मेरा ऑपरेटिंग सिस्टम विंडोज 7 अल्टीमेट है।

मेरे पास एक नज़र थी 'जाल', लेकिन इसमें से कुछ मेरे लिए थोड़ा तकनीकी लग रहा था।

आप क्या सुझाव देंगे?

जवाबों:


34

ऐसा करने का सबसे आसान तरीका Listenनिर्देश के माध्यम से है । चूक से, हमारे httpd.conf में एक पंक्ति है जो पढ़ती है:

Listen *:80

मतलब यह आपके कंप्यूटर के सभी नेटवर्क एड्रेस पर पोर्ट 80 पर ro रिक्वेस्ट का जवाब देगा। इसे बदलना:

Listen 127.0.0.1:80

अपाचे को केवल स्थानीय एडॉप्टर पर अनुरोधों का जवाब देने के लिए कहेंगे, इस प्रकार किसी और चीज की अनदेखी करना।


12

सुनने का विकल्प शायद सबसे अच्छा है, लेकिन सिर्फ एक FYI के रूप में, आप इसे इस तरह से अनुमति / इनकार का उपयोग कर सकते हैं

<Directory /www/vhosts/localhost/>
    Options All
    AllowOverride All
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Directory>

Order deny,allowअपाचे को "सभी अनुरोधों को अस्वीकार करने के लिए कहता है जब तक कि विशेष रूप से अनुमति नहीं दी जाती" ( Order allow,denyविपरीत है, आईई सभी अनुरोधों को अनुमति देता है जब तक कि विशेष रूप से अवरुद्ध न हो)
Deny from allएक समान काम करता Order deny,allowहै कि यह सभी आईपी से सभी अनुरोधों को अवरुद्ध करेगा जब तक कि आप विशेष रूप से उन्हें नहीं खोलते। यह सामान्य व्यवहार दोनों का उपयोग करने लगती है Order deny,allowऔर Deny from allलेकिन मैं 100% यकीन है कि जब वे दोनों एक ही काम करते हैं क्यों नहीं कर रहा हूँ
Allow from 127.0.0.1कहते हैं, "127.0.0.1 से सभी अनुरोधों को अनुमति दें"। 127.0.0.1 लोकलहोस्ट पर मैप करेगा ताकि आप http://127.0.0.1/ या http: // localhost / का उपयोग कर सकें और इसकी अनुमति होगी

जो 403 (फॉरबिडन) एरर को सेव करेगा, जो लोकलहोस्ट पर साइट नं। का अनुरोध करता है

कुछ अन्य उपयोगी सामान;
Allow from 192.168.0.आपके नेटवर्क पर किसी से भी अनुरोध करने की अनुमति देगा (अपना नेटवर्क प्रदान करना 192.168.0.0-192.168.0.255 है)
अनुमति / इनकार के नियमों को आदेश में संसाधित किया जाता है, इसलिए

Deny from 192.168.0.2
Allow from 192.168.0.2

अनुरोध और अनुमति देगा

Allow from 192.168.0.2
Deny from 192.168.0.2

192.168.0.2 से अनुरोधों को अस्वीकार करेगा

इसलिए

Deny from 192.168.0.2
Allow from all

192.168.0.2 से अनुरोधों की अनुमति देगा, भले ही इसे विशेष रूप से अस्वीकार कर दिया गया हो।

आप .htaccess फ़ाइलों में या प्रति-निर्देशिका के आधार पर Allow / Deny नियमों का उपयोग कर सकते हैं


यह मानें कि "आदेश अस्वीकार करें, अनुमति दें", "आदेश अनुमति, अस्वीकार" नहीं। एक छोटी सी छोटी गलती जो लोग लगातार करते हैं।
स्कॉट चू

3

मैंने / etc / apache2 में ports.conf में परिवर्तन किए ताकि पोर्ट पर सुनने का प्रत्येक संदर्भ केवल लोकलहोस्ट को सुन रहा हो। कोई अन्य फ़ाइलों को सुनने के लिए कमांड नहीं लगता है। अपाचे को फिर से शुरू करने के बाद इन परिवर्तनों को वांछित प्रभाव पड़ता है।

/etc/apache2/ports.conf

NameVirtualHost *:80
########################## Listen 80
Listen 127.0.0.1:80

<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
###############################Listen 443
Listen 127.0.0.1:443
</IfModule>

<IfModule mod_gnutls.c>
##################################Listen 443
Listen 127.0.0.1:443
</IfModule>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.