थोड़े 'फ़ाइल ब्राउज़र' मोड को सक्षम करने के लिए nginx को कैसे कॉन्फ़िगर करें?


82

एक बार जब मैंने URL टाइप करने से पहले यह देखा http://test.com/test/, तो मुझे एक html पेज देने के बजाय, यह मुझे दिए गए स्थान की सभी फाइलों को ब्राउज़ करने के लिए इंटरफ़ेस की तरह एक 'फ़ाइल ब्राउज़र' देता है।

मुझे लगता है कि यह शायद एक nginx मॉड्यूल है जिसे स्थान संदर्भ में सक्षम किया जा सकता है।

nginx.confफ़ाइल:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  122.97.248.252;
                location /test {
                        root /home/yozloy/html/;
                        autoindex on;
                }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

अद्यतन करें error.log

2012/05/19 20:48:33 [त्रुटि] 20357 # 0: * 72 खुला () "/ घर / yozloy / html / परीक्षण" विफल (2: ऐसी कोई फ़ाइल या निर्देशिका) नहीं, ग्राहक: 125.43.236.33, सर्वर : 122.97.248.252, अनुरोध: "GET / परीक्षण HTTP / 1.1", मेजबान: "unicom2.marker.kk

मुझे स्थान का /testमतलब गलत समझना चाहिए , मुझे लगा कि इसका मतलब है जब मैं टाइप करता हूं http://example.com/test , तो यह रूट डिक्शनरी को एक्सेस करेगा जो है/home/yozloy/html/


क्या परीक्षण निर्देशिका मौजूद है?
दिमित्री चुबरोव

@DmitriChubarov परीक्षण निर्देशिका मौजूद नहीं है, मैंने सोचा / परीक्षण केवल url में इसका मतलब है, इसलिए मैं रूट निर्देशिका को निर्देशित कर सकता हूं, और मैं एक परीक्षण शब्दकोश बनाना नहीं चाहता, मुझे इसे गलत समझना चाहिए, लेकिन मैं कैसे बना सकता हूं यह सही?
मकोय

क्या आप बस / होम / yozloy / html / परीक्षण निर्देशिका बना सकते हैं और इसे किसी तरह से आबाद कर पाएंगे कि क्या ऑटिंडेक्स काम करता है?
दिमित्री चुबरोव

1
@DmitriChubarov धन्यवाद जब मैं परीक्षण फ़ोल्डर बनाता हूं तो यह काम करता है।
MKO

जवाबों:


115

आपको HttpAutoindexModule का प्रयास करना चाहिए।

Autoindex विकल्प पर सेट करें on। यह डिफ़ॉल्ट रूप से बंद है।

आपका उदाहरण कॉन्फ़िगरेशन ठीक होना चाहिए

location /{ 
   root /home/yozloy/html/; 
   index index.html; 
   autoindex on;
}

ऑटिंडेक्स विकल्प के बिना आपको उन अनुरोधों के लिए त्रुटि 403 प्राप्त होनी चाहिए जो उन /निर्देशिकाओं पर समाप्त होती हैं जिनके पास index.htmlफ़ाइल नहीं है । इस विकल्प के साथ आपको एक सरल सूची मिलनी चाहिए:

<html>
<head><title>Index of /</title></head>
<body bgcolor="white">
<h1>Index of /test/</h1><hr><pre><a href="../">../</a>
<a href="test.txt">test.txt</a>                 19-May-2012 10:43            0
</pre><hr></body>
</html>

संपादित करें: परीक्षण के लिए किसी भी संदर्भ को हटाने के लिए लिस्टिंग को अपडेट किया गया


यह आशाजनक लगता है। लेकिन मैं यह काम नहीं कर सकता मैंने संबंधित निर्देश यहाँ दियाlocation /{ root /home/yozloy/html/; index index.html; autoindex on;}
mko

कृपया जांच लें कि आपने nginx को फिर से शुरू किया है और उस nginx को --without-http_autoindex_module
दिमित्री

मुझे याद है कि मैंने जो झंडा दिया था वह है --with-mp4_module, क्या इसका मतलब http_autoindex_module डिफ़ॉल्ट रूप से स्थापित है? या क्या मुझे कुछ कमांड अगर मैं नहीं की यह स्थापित किया है की जाँच करने के लिए है
MKO

nginx -Vआपको कॉन्फ़िगर किए गए विकल्पों की सूची देनी चाहिए। ध्यान दें कि ऑटोइन्डेक्स डिफ़ॉल्ट रूप से सक्षम है। तो अगर --without-autoindex नहीं है तो ठीक है।
दिमित्री चुबारोव

1
कृपया त्रुटि लॉग की जांच करें और प्रश्न को अपडेट करें। यह बहुत लंबी चर्चा हो रही है। मैं इसे चैट पर ले जाऊंगा।
दिमित्री चुबरोव

14

1. सभी निर्देशिकाओं की सूची सामग्री

Autoindex विकल्प पर सेट करें on। यह डिफ़ॉल्ट रूप से बंद है।

आपकी कॉन्फ़िगरेशन फ़ाइल ( vi /etc/nginx/sites-available/default) इस तरह होनी चाहिए

location /{ 
   ... ( some other lines )
   autoindex on;
   ... ( some other lines )
}

2. केवल कुछ विशिष्ट निर्देशिका की सूची सामग्री

Autoindex विकल्प पर सेट करें on। यह डिफ़ॉल्ट रूप से बंद है।

आपकी कॉन्फ़िगरेशन फ़ाइल ( vi /etc/nginx/sites-available/default)
इस तरह होनी चाहिए। आपकी निर्देशिका पथ में
परिवर्तनpath_of_your_directory

location /path_of_your_directory{ 
   ... ( some other lines )
   autoindex on;
   ... ( some other lines )
}

आशा है कि इससे सहायता मिलेगी..


2
location /<something>(उदाहरण के लिए साझा करने के लिए फ़ाइलों को आप चाहते हैं का उपयोग करने के यूआरएल है /dataनिर्देशिका आप (उदाहरण के लिए के माध्यम से nginx साझा करना चाहते हैं), नहीं ~/videos/funny-cats/)।
टॉम

13

सभी उत्तरों में उत्तर का हिस्सा होता है। मुझे सभी को एक में मिलाने की कोशिश करनी चाहिए।

हौसले से स्थापित nginx सर्वर पर त्वरित सेटअप "फ़ाइल ब्राउज़र" मोड:

  1. Nginx के लिए डिफ़ॉल्ट कॉन्‍फ़िगर संपादित करें:

    sudo vim /etc/nginx/sites-available/default
    
  2. कॉन्फ़िगरेशन अनुभाग में निम्नलिखित जोड़ें:

    location /myfolder {  # new url path
       alias /home/username/myfolder/; # directory to list
       autoindex on;
    }
    
  3. वहां फ़ोल्डर और नमूना फ़ाइल बनाएँ:

    mkdir -p /home/username/myfolder/
    ls -la >/home/username/myfolder/mytestfile.txt
    
  4. नग्नेक्स को फिर से शुरू करें

    sudo systemctl restart nginx
    
  5. परिणाम की जाँच करें: http://<your-server-ip>/myfolderउदाहरण के लिए http://192.168.0.10/myfolder/

यहाँ छवि विवरण दर्ज करें


4

आपको /home/yozloy/html/testफ़ोल्डर बनाने की आवश्यकता है । या आप aliasनीचे दिए गए शो की तरह उपयोग कर सकते हैं :

location /test {
    alias /home/yozloy/html/;
    autoindex on;
}

3

मैंने कई बार कोशिश की है।

और अंत में मैं सिर्फ अंदर डाल रहा हूँ autoindex on;, httpलेकिन serverयह ठीक है।


1

बस इस खंड को सर्वर में जोड़ें, उससे ठीक पहले location / {

location /your/folder/to/browse/ {
        autoindex on;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.