मैं कैसे 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.