मैं कैसे nginx में स्थान से चर प्राप्त कर सकता हूं?


13

नग्नेक्स conf से स्थान:

location ~/photos/resize/(\d+)/(\d+) {
    # Here var1=(\d+), var2=(\d+)
}

मैं कैसे nginx में स्थान से चर प्राप्त कर सकता हूं?

जवाबों:


17

रेगेक्स हर दूसरे स्थान पर बहुत अधिक काम करता है जो उसके पास है।

location ~/photos/resize/(\d+)/(\d+) {
  # use $1 for the first \d+ and $2 for the second, and so on.
}

नग्नेक्स विकी पर उदाहरणों को देखने से भी मदद मिल सकती है, http://wiki.nginx.org/Configuration


12

पिछले उत्तरों के अलावा, आप रेगेक्स कैप्चर किए गए समूहों के नाम भी सेट कर सकते हैं ताकि बाद में उन्हें संदर्भित करना आसान हो;

location ~/photos/resize/(?<width>(\d+))/(?<height>(\d+)) {
  # so here you can use the $width and the $height variables
}

NGINX देखें : जाँच करें कि क्या $ रिमोट_यूज़र उपयोग के उदाहरण के लिए स्थान के पहले भाग के बराबर है


यह स्पष्ट रूप से आवश्यक है, अगर वहाँ भी एक और regex और regex पर कब्जा समूहों के साथ एक और नेस्टेड स्थान है। क्योंकि उस अन्य स्थान के अंदर, $1 $2 $3आदि नेस्टेड रेगेक्स से मानों को संदर्भित करेगा, $1 $2 ...बाहरी रेगेक्स में ओवरराइटिंग । बाहरी रेगेक्स alias /$1में एक , आंतरिक रेगेक्स से उपयोग करेगा , जिसके परिणामस्वरूप फ़ाइल-नहीं-पाया जाता है। $1
काजग्नगन

1
मुझे लगता है कि आप (?<width>\d+)इसके बजाय बस लिख सकते हैं (?<width>(\d+)), या इसके लिए कुछ और कारण है - शायद $1साथ ही साथ प्राप्त करने के लिए $width?
कैमरून केर

2

आप यह कोशिश कर सकते हैं:

location ~ ^/photos/resize/.+ {
    rewrite ^/photos/resize/(\d+)/(\d+) /my_resize_script.php?w=$1&h=$2 last;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.