Nginx ters proxy yönlendirmesi


14

nginxTers proxy olarak kullanıyorum ve web arayüzüme giriş yaptığımda proxy URL'ye yönlendirildim. Bundan kaçınmak ve her zaman URL olarak "sunucu_adı" tutmak istiyorum. Mümkün mü?

Bu benim /etc/nginx/conf.d/my_app.conf:

server { 
    listen 443 ssl; 
    server_name my-app.net; 
    ssl_certificate /etc/pki/tls/certs/my-app.cer; 
    ssl_certificate_key /etc/pki/tls/private/my-app.key; 
    ssl_protocols TLSv1.1 TLSv1.2; 
    access_log /var/log/nginx/my-app.access.log main; 

    location / { 
        proxy_pass http://ip_of_the_app:7180/; 
        proxy_redirect off; 
    } 
} 

Bağlanıyor, http://my-app.netgiriş bilgilerini giriyorum, daha sonra http://ip_of_the_app:7180aynı giriş sayfasına yönlendirildim ve tekrar giriş yapmam gerekiyor. Bu çift girişten kaçınılabilir mi?


tonio94, sorununuz çözüldü mü? evet ise, lütfen cevabı kabul edin. hayır ise, lütfen eksik olanı açıklığa kavuşturun.
cnst

2
Sadece dün test ettim, işe yarıyor, proxy_redirect kaldırılması gerekiyor. Yardım için teşekkürler.
tonio94

Yanıtlar:


27

Belirlemeyin proxy_redirectiçin offbunu yaptığını bildiğini yapmak olmadığını,. proxy_redirectURL yeniden yazmaya benzer bir şey gerçekleştirir, örneğin:

location /sales/ { 
    proxy_pass http://ip_of_the_app:7180/; 
    proxy_redirect http://ip_of_the_app:7180/ http://$host/sales/; 
}

Bu, /sales/yolu başka bir yerde barındırmanıza olanak tanır . Ama o zaman bile, varsayılan parametreler proxy_redirecttam olarak sizin için ücretsizdir. Varsayılan, konumu içinde bulunan her şeye yeniden yönlendirmektir proxy_pass(ve hiç ayarlamadığınız proxy_redirectveya kullanmadığınızda varsayılan parametreler kullanılır proxy_redirect default;).

Ayarlamanız gerekmez proxy_redirect.


Eksik olan, uygulamaya gönderilmesi gereken başlıklar. Bunlardan en önemlisi HOST. Bu, proxy sunucusunu istendiği gibi gerçekleştirir ve tarayıcıda doğru URL'yi saklar.

location / { 
    proxy_pass http://ip_of_the_app:7180/; 
    proxy_set_header HOST $host;
}

Adresindeki uygulamanın http://ip_of_the_app:7180/artık Host: my-app.netüstbilgiyle isteği alacağını unutmayın .


Ayrıca birkaç başlık daha kullanmayı düşünmelisiniz:

proxy_set_header Referer $http_referer;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;

Bu, adresindeki uygulama içinde daha iyi giriş yapılmasına olanak tanır http://ip_of_the_app:7180/. X-Forwarded-Forgerçek istemcinin IP'sini vermek (IP'nin aksine nginx) ve X-Forwarded-Protoistemcinin nginxHTTP veya HTTPS üzerinden bağlanıp bağlanmadığını kontrol etmek .


Yardım ettiğin için teşekkür ederim. proxy_redirect gerekli değildir ancak düzgün çalışması için proxy_set_header Yönlendiren ip_of_the_app: 7180 ayarlanmalıdır.
tonio94

@ tonio94 - Teşekkürler, cevabı güncelledim. Normal kullanımının , istekten kopyalayan Refererbasit kullanım olduğunu unutmayın $http_referer. İsteğin bir Yönlendirici başlığı yoksa bu çalışmaz, bu nedenle bazı durumlarda kodlama yapmak bir çözümdür.
grochmal

@JonathanKomar - Bunun için teşekkür ederim, haklısın, şimdi düzenlendi. Üzgünüm yorumunuzu fark etmem biraz zaman aldı.
grochmal

@grochmal Teşekkürler, temelde hayatımı şu bilgilerle kurtardınız: proxy_set_header HOST $ host;
Obay Abd-Algader
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.