अपाचे VirtualHost 403 निषिद्ध


123

मैंने हाल ही में अपाचे के साथ एक परीक्षण सर्वर स्थापित करने की कोशिश की। साइट को डोमेन के तहत चलना चाहिए www.mytest.com। मुझे हमेशा एक 403 Forbiddenत्रुटि मिलती है । मैं Ubuntu 10.10 सर्वर संस्करण पर हूं। डॉक रूट dir के अंतर्गत है /var/www। निम्नलिखित मेरी सेटिंग्स हैं:

/ Var / www की सामग्री

ls -l /var/www/

total 12
drwxr-xr-x 2 root root 4096 2011-08-04 11:26 mytest.com
-rwxr-xr-x 1 root root 177 2011-07-25 16:10 index.html

सर्वर पर होस्ट फ़ाइल की सामग्री (आईपी 192.168.2.5 के साथ)

cat /etc/hosts

127.0.0.1 localhost 
127.0.1.1 americano
192.168.2.5 americano.mytest.com www.mytest.com

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

साइट का विन्यास

<VirtualHost *>
ServerAdmin admin@mytest.com
ServerName www.mytest.com
ServerAlias mytest.com

DocumentRoot "/var/www/mytest.com"

ErrorLog /var/log/apache2/mytest-error_log
CustomLog /var/log/apache2/mytest-access_log combined

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/var/www/mytest.com">
Options -Indexes FollowSymLinks
AllowOverride None

Order allow,deny
Allow from all
</Directory>
</VirtualHost>

.htaccessमेरे डॉक रूट में कोई फ़ाइल नहीं है । अनुमतियाँ सही तरीके से सेट की गई हैं (www-data द्वारा पठनीय)।

यदि मैं अपने डेस्कटॉप से ​​आईपी पते में टाइप करता हूं, तो साइट सही तरीके से दिखाई देती है। मैंने www.mytest.comसर्वर के आईपी को इंगित करने के लिए अपने डेस्कटॉप पर मेजबान फ़ाइल को बदल दिया । जब मैं इसका उपयोग करता हूं, मुझे मिलता है 403। चूंकि इस साइट के कई कार्य साइटनेम-संवेदी हैं, इसलिए मुझे डोमेन नाम से साइट तक पहुंचने में सक्षम होना चाहिए।

एक और मज़ेदार बात यह है, भले ही सभी लॉग फ़ाइलें ठीक से बनाई गई हों, उन्हें इस त्रुटि के बारे में कोई जानकारी नहीं है।

मैं फँस गया हूँ। क्या कोई मदद कर सकता है?


क्या आप इसमें sudo sh -c ". /etc/apache2/envvars; apache2 -S"(Virtualhosts की सूची) और:sudo sh -c ". /etc/apache2/envvars; grep -R Listen /etc/apache2/*|grep -v \"#\"; grep -R NameVirtual /etc/apache2/*|grep -v \"#\""
regilero

पहला कमांड निम्नलिखित है: VirtualHost configuration: 192.168.2.5:* www.mytest.com (/etc/apache2/sites-enabled/mytest.com:1) Syntax OK दूसरा एक रिटर्न:/etc/apache2/ports.conf:Listen 80 /etc/apache2/ports.conf: Listen 443 /etc/apache2/ports.conf: Listen 443 /etc/apache2/conf.d/virtual.conf:NameVirtualHost *
युकेन वांग

1
पर कोशिश serverfault.com
regilero

जवाबों:


296

अपाचे 2.4.3 (या शायद थोड़ा पहले) ने एक नया सुरक्षा फीचर जोड़ा, जिसके परिणामस्वरूप अक्सर यह त्रुटि होती है। आपको "सर्वर कॉन्फ़िगरेशन द्वारा अस्वीकृत ग्राहक" फ़ॉर्म का लॉग संदेश भी दिखाई देगा। निर्देशिका को एक्सेस करने के लिए उपयोगकर्ता को पहचान की आवश्यकता होती है। यह httpd.conf में DEFAULT द्वारा अपाचे के साथ जहाजों को चालू किया गया है। आप निर्देश के साथ सुविधा को सक्षम करते हुए देख सकते हैं

Require all denied

यह मूल रूप से सभी उपयोगकर्ताओं तक पहुंच से इनकार करने के लिए कहता है। इस समस्या को ठीक करने के लिए, या तो अस्वीकृत निर्देश (या बहुत बेहतर) को हटा दें, निम्नलिखित निर्देश को उन निर्देशिकाओं में जोड़ें जिन्हें आप एक्सेस देना चाहते हैं:

Require all granted

जैसे की

<Directory "your directory here">
   Order allow,deny
   Allow from all
   # New directive needed in Apache 2.4.3: 
   Require all granted
</Directory>

3
मैं यह नोट करना चाहूंगा कि यदि आपको वर्चुअल होस्ट का उपयोग करने में यह समस्या आ रही है, तो आपको अपाचे / कॉन्फ / अतिरिक्त / httpd-vhosts.conf फ़ाइल के अंदर प्रत्येक वर्चुअल होस्ट सेटिंग्स में "सभी की आवश्यकता है" जोड़ने की आवश्यकता होगी।
साउंडफिको 4

1
मैंने इस निर्देश को जोड़ा है /etc/apache2/apache2.confऔर इससे मदद मिली है, धन्यवाद!
दिमेडमेडव

@ Soundfx4, के apache/conf/extraअंदर कोई फोल्डर नहीं है/etc/apache2
Black

मैंने /var/dev/website.com जोड़ा था और 403 त्रुटि हो रही थी। /Etc/apache2/apache2.conf (ubuntu) ने सुझाए गए निर्देश को जोड़ दिया। धन्यवाद दोस्तों!
लवफाइनआर्ट

धन्यवाद महोदय। इन दिनों काम करने के लिए अपाचे कठिन और कठिन है ...
OoDeLally

15

अपाचे उबंटू 2.4.7 के लिए, मैंने अंत में पाया कि आपको अपाचे 2 में अपनी वर्चुअल होस्ट को व्हाइट लिस्ट करने की आवश्यकता है ।conf

# access here, or in any related virtual host.
<Directory /home/gav/public_html/>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

8

यह एक अनुमति समस्या हो सकती है।

वर्चुअल डॉक्यूमेंट रूट के लिए हर एक पेरेंट पथ वेब सर्वर httpd उपयोगकर्ता द्वारा पठनीय, लिखने योग्य और निष्पादन योग्य होना चाहिए

अपाचे 403 त्रुटियों के बारे में इस पृष्ठ के अनुसार ।

चूंकि आप उपयोग कर रहे हैं Allow from all, इसलिए आपका आदेश मायने नहीं रखता, लेकिन आप डिफ़ॉल्ट व्यवहार को "अनुमति देने" के Deny,Allowलिए सेट करने के लिए इसे स्विच करने का प्रयास कर सकते हैं ।


4
लिखने योग्य? वास्तव में? मुझे यकीन नहीं है
php-dev

5

वर्चुअलाइजहोस्ट से डायरेक्ट्री क्लॉज को हटाएं और वर्चुअलाइज घोषित करने से पहले इसे लगाएं।

मुझे भी लंबे समय के लिए पागल कर दिया। पता नहीं क्यों। यह एक डेबियन बात है।


वाह, यह बहुत अजीब है।
काको-नवाओ

1

मुझे उबंटू 14.04 पर एक वर्चुअल होस्ट के साथ भी यही समस्या थी

मेरे लिए निम्नलिखित समाधान काम किया:

http://ubuntuforums.org/showthread.php?t=2185282

यह सिर्फ एक <Directory >टैग जोड़ रहा है/etc/apache2/apache2.conf


0

यदि आपने सबकुछ ठीक किया है, तो बस अनुमति होम निर्देशिका की तरह दें:

sudo chmod o+x $HOME

फिर

sudo systemctl restart apache2

0

समस्या यह थी कि फ़ाइल एक्सेस की अनुमति गलत थी।

मैंने निर्देशिका की अनुमतियों को बदल दिया और इसने काम किया।


0

मेरे पास आर्क लिनक्स पर भी यह मुद्दा था ... यह मुझे कुछ समय खर्च करता है लेकिन मैं अब खुश हूं कि मुझे अपनी गलती मिली:

.htmlफाइलों के साथ मेरी निर्देशिका जहां मेरे खाते में है।
मैंने सब कुछ सेट किया, r+xलेकिन मुझे अभी भी 403त्रुटि मिली ।
मैं पूरी तरह से पीछे चला गया और अपनी समस्या को हल करने के लिए अपने घर-निर्देशिका को सेट करने की कोशिश की ।


-1

मैंने इस बेवकूफ समस्या पर सिर्फ कई घंटे बिताए

सबसे पहले, टर्मिनल में इसका उपयोग करके अनुमतियाँ बदलें

find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +

मुझे नहीं पता कि 664 और 775 के बीच क्या अंतर है, मैंने दोनों 775 को इस तरह से किया था। इसके अलावा htdocs को मेरे लिए उदाहरण के लिए निर्देशिका पथ की आवश्यकता थी

/usr/local/apache2/htdocs 

find htdocs -type f -exec chmod 775 {} + -o -type d -exec chmod 775 {} +

यह दूसरी गूंगी बात भी है

सुनिश्चित करें कि आपकी छवि src लिंक उदाहरण के लिए आपका डोमेन नाम है

src="http://www.fakedomain.com/images/photo.png"

होना सुनिश्चित करें

EnableSendfile off in httpd.conf file
EnableMMAP off in httpd.conf file

आप टर्मिनल में पिको का उपयोग करने वालों को संपादित करते हैं

मैंने विशेष रूप से छवियों के लिए एक निर्देशिका बनाई है ताकि जब आप ब्राउज़र एड्रेस बार domainname.com/images में टाइप करें, तो आपको उन तस्वीरों की एक सूची मिल जाएगी जिन्हें डाउनलोड किया जा सकता है और छवि फ़ाइलों को ठीक से काम करने के लिए सफलतापूर्वक डाउनलोड करने की आवश्यकता है

<Directory /usr/local/apache2/htdocs/images>
AddType images/png .png
</Directory>

और वे समाधान हैं जो मैंने कोशिश की है, अब मेरे पास कार्यशील छवियां हैं ... याय !!!

अगली समस्या पर

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