configuration Nginx 403 त्रुटि: [फ़ोल्डर] की निर्देशिका अनुक्रमणिका प्रतिबंधित है
मुझे यहां एक अच्छा उदाहरण मिला: https://github.com/daylerees/laravel-website-configs/blob/6db24701073dbe34d2d58fea3a3c6b3c0cd5685b/nginx.conf
यह कॉन्फ़िगरेशन मेरे लिए काम करता है:
server {
server_name www.mysite2.name;
return 301 $scheme://mysite2.name$request_uri;
}
server {
#This config is based on https://github.com/daylerees/laravel-website-configs/blob/6db24701073dbe34d2d58fea3a3c6b3c0cd5685b/nginx.conf
server_name mysite2.name;
# The location of our project's public directory.
root /usr/share/nginx/mysite2/live/public/;
# Point index to the Laravel front controller.
index index.php;
location / {
# URLs to attempt, including pretty ones.
try_files $uri $uri/ /index.php?$query_string;
}
# Remove trailing slash to please routing system.
if (!-d $request_filename) {
rewrite ^/(.+)/$ /$1 permanent;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
फिर ब्राउजर में एकमात्र आउटपुट लैरावेल त्रुटि थी: "अरे, ऐसा लगता है कि कुछ गलत हो गया।"
एक समस्या आईडीईए जो उस समस्या को ठीक कर सकती है वह chmod -R 777 app/storage
(जिसे मैंने यहां पाया: https://stackoverflow.com/a/18624752/470749 )। लेकिन कुछ विश्व-लेखन योग्य बनाना खराब सुरक्षा है।
मुझे लगता है कि chmod -R 755 app/storage
काम करता है और अधिक सुरक्षित है।
मेरे पास 3 डोमेन नाम हैं और मैं Nginx का उपयोग कर एक सर्वर (एक डिजिटल महासागर बूंद) पर सभी 3 साइटों को होस्ट करने की कोशिश कर रहा हूं।
mysite1.name mysite2.name mysite3.name
उनमें से केवल 1 काम करता है। अन्य दो परिणाम 403 त्रुटियों में (उसी तरह)।
मेरे nginx त्रुटि लॉग में, मैं देखता हूं: [error] 13108#0: *1 directory index of "/usr/share/nginx/mysite2.name/live/" is forbidden
।
मेरी साइट-सक्षम कॉन्फ़िगरेशन है:
server {
server_name www.mysite2.name;
return 301 $scheme://mysite2.name$request_uri;
}
server {
server_name mysite2.name;
root /usr/share/nginx/mysite2.name/live/;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.html index.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
सभी 3 साइटों में लगभग समान कॉन्फ़िगरेशन फ़ाइलें हैं।
प्रत्येक साइट की फ़ाइलें फ़ोल्डरों में होती हैं जैसे /usr/share/nginx/mysite1.name/someFolder, और फिर /usr/share/nginx/mysite1.name/live उस पर एक सिम्लिंक है। (Mysite2 और mysite3 के लिए वही।)
मैंने Nginx 403 को सभी फाइलों के लिए मना कर दिया है लेकिन इससे मदद नहीं मिली है।
क्या गलत हो सकता है पर कोई विचार?
मुझे इसी तरह की त्रुटि का सामना करना पड़ा
--- वेबपृष्ठ में "403 निषिद्ध"
--- "13: त्रुटि लॉग में /var/log/nginx/error.log पर अनुमति अस्वीकार"
मेरे लिए 3 चरणों के नीचे काम किया:
1: ओपन टर्मिनल, नीचे कुछ ऐसा देखा
user1@comp1:/home/www/
तो, मेरा उपयोगकर्ता नाम "user1" है (ऊपर से)
2: /etc/nginx/nginx.conf में परिवर्तित उपयोगकर्ता
# user www-data;
user user1;
3: nginx रीलोडेड
sudo nginx -s reload
इसके अतिरिक्त, मैंने फ़ाइल / फ़ोल्डर अनुमतियां लागू की हैं (इससे पहले कि मैंने 3 चरणों से ऊपर किया हो)
(मेरी निर्देशिका में 755, कहें / dir1 /) और (644 उस निर्देशिका के तहत फाइलों के लिए):
(मुझे यकीन नहीं है, अगर यह अतिरिक्त कदम वास्तव में आवश्यक है, तो 3 चरणों से ऊपर पर्याप्त हो सकता है):
chmod 755 ./dir1/
chmod 644 ./dir1/*.*
उम्मीद है कि यह किसी को जल्दी मदद करता है। शुभकामनाएँ।
मुझे एक ही समस्या थी, लॉगफाइल ने मुझे यह त्रुटि दिखायी:
2016/03/30 14:35:51 [error] 11915#0: *3 directory index of "path_scripts/viewerjs/" is forbidden, client: IP.IP.IP.IP, server: domain.com, request: "GET /scripts/viewerjs/ HTTP/1.1", host: "domain", referrer: "domain.com/new_project/do_update"
मैं कोडिनेटर फ्रेमवर्क के साथ एक PHP एप होस्ट कर रहा हूँ। जब मैं अपलोड की गई फाइलों को देखना चाहता था तो मुझे 403 Error
मिली।
समस्या यह थी कि nginx.conf
ठीक से परिभाषित नहीं किया गया था। के बजाय
index index.html index.htm index.php
मैं केवल शामिल था
index index.php
मेरे पास मेरी जड़ में index.php है और मैंने सोचा कि वह पर्याप्त था, मैं गलत था;) संकेत ने मुझे NginxLibrary दिया
आपको यह Nginx नीति (उदाहरण के लिए "deny") के कारण मिल सकता है, या आप इसे Nginx गलत कॉन्फ़िगरेशन के कारण प्राप्त कर सकते हैं, या आप इसे सिस्टम सिस्टम प्रतिबंधों के कारण प्राप्त कर सकते हैं।
आप यह निर्धारित कर सकते हैं कि बाद में (और संभावित रूप से स्ट्रेस का उपयोग करके गलत कॉन्फ़िगरेशन का सबूत देखें (सिवाय इसके कि, ओपी को उस तक पहुंच नहीं होगी):
# pidof nginx
11853 11852
# strace -p 11853 -p 11852 -e trace=file -f
Process 11853 attached - interrupt to quit
Process 11852 attached - interrupt to quit
[pid 11853] stat("/var/www/html/kibanaindex.html", 0x7ffe04e93000) = -1 ENOENT (No such file or directory)
[pid 11853] stat("/var/www/html/kibana", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
^CProcess 11853 detached
Process 11852 detached
यहां मैं nginx द्वारा की गई फाइल सिस्टम गतिविधि का निरीक्षण कर रहा हूं, जबकि एक परीक्षण चलाया गया था (मुझे आपके जैसा ही त्रुटि थी)।
उस समय मेरी कॉन्फ़िगर का एक चयनित भाग यहां दिया गया है
location /kibana/3/ {
alias /var/www/html/kibana;
index index.html;
}
मेरे मामले में, जैसा कि स्ट्रेस काफी स्पष्ट रूप से दिखाता है, "इंडेक्स" में "उपनाम" में शामिल होने की अपेक्षा नहीं थी, और ऐसा लगता है कि मुझे हमेशा निर्देशिका नामों को ए / के साथ जोड़ने की आदत में आने की आवश्यकता है, इसलिए मेरे मामले में, निम्नलिखित काम किया:
location /kibana/3/ {
alias /var/www/html/kibana/;
index index.html;
}
आपको अपनी स्थिर फाइल निर्देशिका पर निष्पादन अनुमति की आवश्यकता है। इसके अलावा उन्हें आपके nginx उपयोगकर्ता और समूह द्वारा दिखाया जाना चाहिए।
try_files
को index.php
पथ पर इंगित करने के लिए बदलें, " try_files
" में आपने उल्लेख किया है कि यह ऐसा कुछ होना चाहिए
location / {
try_files $uri $uri/ /public/index.php$request_uri;
}
और "codeigniter" प्रोजेक्ट में इसे इस तरह से आजमाएं
location / {
try_files $uri $uri/ /public_web/index.php$request_uri;
}
location ~* \.php$ {
...
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
डिफ़ॉल्ट बदलें
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
सेवा मेरे
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
मेरी समस्या हल हो गई।
उबंटू या लिनक्स में करने के लिए सरल तरीके से
403 निषिद्ध nginx / 1.10.3 (उबंटू)
अपने सिस्टम के साथ पहले nginx सर्वर बंद करो
सूडो सेवा nginx बंद करो
और apache2 सर्वर शुरू करें
सुडो सेवा apache2 पुनरारंभ करें
मुझे उम्मीद है कि यह काम करेगा। मैंने कोशिश की कि यह मेरे लिए काम कर रहा है।