Nginx .htaccess और छिपी हुई फ़ाइलों को अक्षम करता है, लेकिन .well- ज्ञात निर्देशिका को अनुमति देता है


16

मेरे पास एक Nginx सर्वर है, और इसमें छिपी हुई फ़ाइलों को अक्षम किया गया है nginx_vhost.conf

## Disable .htaccess and other hidden files
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }

लेकिन LetsEncrypt को .well-knownनिर्देशिका तक पहुंच की आवश्यकता है ।

मैं .well-knownनिर्देशिका को कैसे अनुमति दूं और अन्य छिपी हुई फाइलों को अस्वीकार कर दूं?


नोट: nginx .htaccessफ़ाइलों का उपयोग या नहीं करता है । इसमें कॉन्फिगरिटोन फाइलें हैं, लेकिन उन्हें कॉल नहीं किया जाता है .htaccess, न ही वे काम करते हैं।
रॉब

जवाबों:


17

अन्य समाधानों ने मेरी मदद नहीं की।

मेरा समाधान के लिए एक नकारात्मक रेगेक्स को शामिल करना है .well-known। आपका कोड ब्लॉक इस तरह दिखना चाहिए:

## Disable .htaccess and other hidden files
location ~ /\.(?!well-known).* {
    deny all;
    access_log off;
    log_not_found off;
}

यह शुरू होने वाले को छोड़कर हर डॉट फ़ाइल को ब्लॉक करेगा .well-known

पुनश्च: मैं return 404;ब्लॉक में भी जोड़ूंगा।


1
क्या location ~* /\.(?!well-known\/) {इसे github.com/h5bp/server-configs-nginx/blob/master/h5bp/location/… के समान देखा जाता है location ~ /\.(?!well-known).* { ?
प्रो बैकअप

3
नहीं, यह बिल्कुल वैसा ही नहीं है। /\.(?!well-known\/)मेरे रेगेक्स की तरह अभिव्यंजक नहीं है (क्योंकि मैं परिभाषा के द्वारा अच्छी तरह से ज्ञात को छोड़कर सभी डॉट फ़ाइलों को अवरुद्ध करता हूं)। शायद सबसे अच्छा एक संयोजन होगा, location ~ /\.(?!well-known\/).*जो केवल एक प्रसिद्ध निर्देशिका के बजाय एक सैद्धांतिक को भी अनब्लॉक करता है .well-known-blabla। लेकिन मुझे लगता है कि एक सिद्धांतवादी .well-blabla फ़ाइल को अवरुद्ध नहीं करने में कोई वास्तविक खतरा नहीं है।
therealmarv

क्यों htaccess अक्षम करें क्योंकि वैसे भी Nginx इसे संभाल नहीं करता है?
वेबवुमन

3
हां आप सही हैं @webwoman लेकिन कभी-कभी मिश्रित वातावरण होते हैं। किसी भी डॉट फ़ाइल को मेरी राय में (.it के साथ इतिहास की सुरक्षा या अवांछित उजागर) तब तक नहीं परोसा जाना चाहिए जब तक कि वास्तव में जरूरत न हो।
therealmarv

16

Nginx कॉन्फ़िगरेशन फ़ाइल में उनकी उपस्थिति के क्रम में नियमित अभिव्यक्तियों के साथ स्थान लागू करता है।

इसलिए, अपने वर्तमान स्थान से ठीक पहले इस तरह एक प्रविष्टि जोड़ने से आपको मदद मिलेगी।

location ~ /\.well-known { 
    allow all;
}

धन्यवाद, यह वही है जो मुझे चाहिए था! एक नियम से पहले सभी dotfiles तक पहुँच से इनकार करते हुए यह रखा। केवल एक चीज जो मैंने बदली, वह थी डॉट से बचना, जैसे location ~ /\.well-known {। किसी भी तरह से, यह स्वीकृत उत्तर होना चाहिए।
anexl

8

मैंने अपनी वेबसाइट पर एनजीआईएनएक्स के साथ चलो एनक्रिप्ट के उपयोग के तरीके के बारे में कदम ट्यूटोरियल द्वारा एक पूर्ण कदम प्रदान किया है ।

प्रमुख भाग हैं:

  • आधिकारिक क्लाइंट केवल ओके है, और अमेज़ॅन लिनक्स पर वास्तव में खराब है। मैं एक अलग ग्राहक, एसीएमई की सिफारिश करता हूं ।
  • वेबरोट विधि के लिए इस स्थान का उपयोग करें, मेरे ग्राहक की सलाह से। ध्यान दें कि अनुरोध http, नहीं https पर परोसे जाते हैं।

आपको अपने https ब्लॉक में श्रोताओं की आवश्यकता नहीं है, यह सब https पर किया गया है। यह केवल यह साबित करने के लिए है कि आप डोमेन को नियंत्रित करते हैं, यह निजी या गुप्त कुछ भी नहीं परोस रहा है।

# Answer let's encrypt requests, but forward everything else to https
server {
  listen       80;
  server_name  example.com www.example.com
  access_log  /var/log/nginx/access.log main;

  # Let's Encrypt certificates with Acmetool
  location /.well-known/acme-challenge/ {
    alias /var/www/.well-known/acme-challenge/;
  }

  location / {
    return       301 https://www.example.com$request_uri;
  }
}

ऊपर दिए गए चरण गाइड द्वारा पूर्ण चरण।


3

इसे जोड़ें (पहले या बाद में):

location ^~ /.well-known/ {
        log_not_found off;
     }

आप इसे नीचे भी जोड़ सकते हैं, क्योंकि मिलान करने वाला ^~संशोधक नियमित अभिव्यक्तियों पर पूर्वता लेता है। डॉक्स देखें ।


0

यदि आपके पास बहुत सारी कॉन्फ़िग फाइल्स हैं और उनमें पहले से ही .htaccess जैसे इंकार शामिल हैं

location ~ /\.ht { deny all; }

तब सभी डॉट फ़ाइलों को अनदेखा करने के बजाय , आप केवल .गित के साथ एक दूसरी उपेक्षा जोड़ सकते हैं

sed -i '/location ~ \/\\.ht { deny all; }/a \  location ~ \/\\.git { deny all; }' /etc/nginx/*
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.