स्लैश के बिना url को एक्सेस करने पर Nginx 8080 को पोर्ट करता है [बंद]


19

जब पहुँच: http://example.com/somefolder -> http://example.com:8080/somefolder

मैंने यह कोशिश की है:

 http {
    port_in_redirect off;

कोई विचार?


क्या आप अपना कॉन्फ़िगरेशन प्रदान कर सकते हैं? क्या आप नगनेक्स के पीछे एक और सेवा के लिए आसन्न हैं?
शेन झुंझलाना

मेरा मानना ​​है कि हम अपाचे के लिए कर रहे हैं। आप कौन सी विन्यास फाइल चाहते हैं?
क्रिस म्यंच

3
नंगेक्स कॉन्फ़िगरेशन फ़ाइल जो उस serverब्लॉक को परिभाषित करती है जिसमें proxy_passनिर्देश होता है । संभवतः आपको जो proxy_redirectनिर्देश देने जा रहे हैं वह एक निर्देश होगा - यह देखकर कि आपका कॉन्फिडेंस कन्फर्म होना चाहिए।
शेन झुंझलाना

नोट कुछ ब्राउज़रों इसलिए जब बदलते रीडायरेक्ट कैश कि port_in_redirectसे onकरने के लिए offआप इसे पुनः आरंभ करने की आवश्यकता हो सकती है।
प्रकट होना

@emersion port_in_redirectबिल्कुल भी काम नहीं करता
TomSawyer

जवाबों:


21

मैं बस उसी समस्या में भाग गया और port_in_redirect off;वास्तव में मेरे लिए काम किया, बस सुनिश्चित करें कि आप इसे server {}ब्लॉक के अंदर उपयोग करते हैं ।

server {
  listen 8080;
  server_name example.com;

  port_in_redirect off;
  autoindex on;

  location / {
    root /var/www/example.com;
    index index.html;
  }
}

या port_in_redirectअंदर का भी उपयोग कर सकते हैं location
wqw

एक लोड बैलेंसर के पीछे 8080 पर नग्नेक्स की मेजबानी के लिए पूरी तरह से काम किया। धन्यवाद
xxstevenxo

मेरे लिए भी काम किया, आपकी मदद के लिए बहुत बहुत धन्यवाद
h3nr1ke

4

इससे समस्या ठीक होनी चाहिए। proxy_redirectनिर्देश के बाद proxy_passनिर्देश जोड़ें

proxy_redirect http://example.com:8080/ http://example.com/;


3

यदि कोई व्यक्ति अभी भी nginx रिवर्स प्रॉक्सी सेटअप के पीछे अपाचे होने के दौरान इस समस्या का सामना कर रहा है, तो आप ff की कोशिश कर सकते हैं:

  स्थान / {
    xy_redirect बंद;
    xy_set_header होस्ट $ होस्ट: $ server_port; # <- इस एक ने मेरा हल किया
    प्रॉक्सी_सेट_हेडर एक्स-फ़ॉर्वर्ड-होस्ट $ http_host;
    प्रॉक्सी_सेट_हैडर एक्स-रियल-आईपी $ रिमोट_ड्रेड;
    प्रॉक्सी_सेट_हाइडर एक्स-फॉरवर्डेड-फॉर $ प्रॉक्सी_एड_एक्स_फोवर्डवर्ड_फोर्स;
    प्रॉक्सी_पास http://127.0.0.1:8083 ;
  }
  

मेरा सेटअप यह है कि मैं अपाचे को 127.0.0.1:8083 सुनता हूं और इसे nginx प्रॉक्सी अनुरोध करने देता हूं।


2

मुझे अपने nginx + Apache सेटअप के साथ भी यही समस्या थी। अपाचे इसे अपने पोर्ट (8080 पर चलने) पर पुनर्निर्देशित करने लगता है, जबकि नगीनक्स पोर्ट 80 पर है।

मेरे सेटअप में, इसने सामान्य यूआरएल के लिए अनंत अनुप्रेषित लूप बनाया :

proxy_set_header Host $host:80; # Force port 80

इसके बजाय रिटर्निंग डेटा को इस तरह से पोर्ट 80 पर बाँधें:

proxy_bind $host:80; # Bind to port 80

यहाँ मेरा nginx सर्वर ब्लॉक है:

server {
    listen 80;
    listen [::]:80 ipv6only=on;

    server_name _; # Wildcard server

    location / {
        proxy_bind $host:80; # Bind to port 80 << THIS IS THE MAGIC
        proxy_pass http://localhost:8080;
        proxy_set_header Host            $host; # Pass host header
        proxy_set_header X-Real-IP       $remote_addr; # Preserve client IP
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

इस वाइल्डकार्ड सेटअप के साथ, सभी अनुरोधों के लिए अपाचे को पास करने के लिए nginx के पास सर्वर ब्लॉक नहीं है।


बिल्कुल भी काम नहीं करता है
TomSawyer

1

मामले में किसी और के पास यह मुद्दा था - यहाँ लेख: http://www.linuxquestions.org/questions/linux-server-73/strange-nginx-redirects-without-trailing-slash-9n876/ मेरे लिए समस्या हल ।

मुझे प्रॉक्सी में एक अतिरिक्त हेडर जोड़ना था।

सुनिश्चित करें कि आपके पास होस्ट सेट है $http_hostऔर यह भी कि आपने नीचे पसंद करने के X-Forwarded-Hostलिए सेट किया है $http_host:

proxy_redirect off;
proxy_set_header Host $http_host;             # <-- make sure this is $http_host
proxy_set_header X-Forwarded-Host $http_host; # <-- make sure you set this
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 32 8k;
proxy_busy_buffers_size 64k;

यह सब पर काम नहीं करता है
TomSawyer

1

मुझे लगता है कि यह सरल उदाहरण पर्याप्त है:

location = /somefolder {
    return 302 http://$host:8080/somefolder;
}


0

मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था।

हो सकता है कि आपको proxy_set_headerहेडर्स होस्ट और लोकेशन सेट करने के लिए निर्देश का उपयोग करना चाहिए । मेरे विन्यास में मैंने जोड़ा proxy_set_header Location $host:80; और सभी अनुरोध अब पोर्ट 80 पर वापस आते हैं।


मेरा मानना ​​है कि यह "/" से परे पुनर्निर्देशित करेगा - प्रत्येक पुनर्निर्देशन $ मेजबान को इंगित करेगा: 80
बाधाविरोधी

0

यह समस्या निग्नेक्स ऑटो ट्रांसलेशन के कारण निरपेक्ष पथ पर है, है ना?
Nginx को अनुवाद न करने का एक तरीका बताया गया है, आप स्लैश से पहले एक स्थान जोड़ते हैं: ngx.redirect(" /foo")


कृपया ध्यान दें कि यह 3 साल पहले का प्रश्न है।
हिरण हंटर

-1

मैं इसे आपके सर्वर ब्लॉक में जोड़ने के बजाय सुझाऊंगा:

rewrite /wp-admin$ $scheme://$host$uri/ permanent;

यह तब था जब आप example.com/wp-admin पर जाते हैं, example.com पर जाना होगा। इसके बजाय example.com पर जाएँ ।:8080/wp-admin/ और यदि आप CloudFlare DNS पर हैं तो उदाहरण के लिए कहेंगे साइट नीचे है।

मैं Ubuntu, Nginx और वार्निश का उपयोग कर रहा हूं और यह port_in_redirect को अक्षम करने के बजाय अब पूरी तरह से काम करता है।

जोड़ने के लिए, nginx को पुनः आरंभ करना सुनिश्चित करें:

sudo service nginx restart

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.