Portál AbcLinuxu, 31. července 2025 15:03


Dotaz: Nginx reverzny proxy - location /nieco/ smer iny webserver

7.3.2017 15:45 nobody22
Nginx reverzny proxy - location /nieco/ smer iny webserver
Přečteno: 516×
Odpovědět | Admin
Zdravím, Poprosil by som o pomoc s možno jednoduchou úlohou

Nainštalovaný Nginx 1.8 na Debian Strech. Z firewalu je presmerovaný port 80 na Nginx. Vo vnútri siete máme Windows IIS na porte 81.

Potrebujem dosiahnut aby stranka www.domena.com smerovala na root Nginx, stranka www.domena.com/nieco/ smerovala na vnutorny server 192.168.1.1:81 (IIS)

pokial mam location nastavene takto, tak to bezi ok cez www.domena.com
upstream iisserver  {                                                            
      server 192.168.1.1:81;                                                  
}                                                                   
server {                                              
   location / {                                                          
     proxy_pass  http://iisserver;                                               
   }                                                                            
} 
pokial mám v location uvedené /nieco/, tak to nefunguje cez www.domena.com/nieco/
upstream iisserver  {                                                            
      server 192.168.1.1:81;                                                  
}                                                                   
server {                                              
             
   location /nieco/ {                                                          
     proxy_pass  http://iisserver;                                               
   }                                                                            
} 
S tým, že IIS server vráti chybu že adresár "nieco" neexistuje, Ako by som dosiahol, že Nginx zavolá IIS bez URI "nieco"

Ďakujem

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.3.2017 16:06 chrono
Rozbalit Rozbalit vše Re: Nginx reverzny proxy - location /nieco/ smer iny webserver
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nechýba tam lomítko na konci?
proxy_pass  http://iisserver/
7.3.2017 16:31 Vojt
Rozbalit Rozbalit vše Re: Nginx reverzny proxy - location /nieco/ smer iny webserver
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ako by som dosiahol, že Nginx zavolá IIS bez URI "nieco" - na to jsem použil workaround s RegExp. Nezkoušel jsem to, tak jen po paměti, ale takhle nějak nám to funguje.
upstream iisserver  {
      server 192.168.1.1:81;
}
server {
   location ~ "^/nieco/" {
       rewrite    "^/nieco/(.*)$" /$1  break;
       proxy_pass http://iisserver/$1;
   }

   location / {
       root    /var/www;
   }
}
7.3.2017 21:12 nobody22
Rozbalit Rozbalit vše Re: Nginx reverzny proxy - location /nieco/ smer iny webserver
Odpovědět | | Sbalit | Link | Blokovat | Admin
ďakujem za odpovede

to lomítko na konci som skúšal viackrát.. teraz nastala zmena:-), počiatočnú stránku www.domena.com/nieco/ načíta, ale nie celkom korektne, všetky odkazy na stránke smerujú na cestu www.domena.com/... a nie www.domena.com/nieco/...

pokiaľ som skúsil použiť druhý príklad s rewrite, tak ma to vždy redirectlo na

http://iisserver/Account/Login?ReturnUrl=%2F

čo je neexistujúca adresa

čiže ako keby nevedelo resolvovať upstream a URI "/nieco/" sa stratilo..
7.3.2017 21:53 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Nginx reverzny proxy - location /nieco/ smer iny webserver
nie celkom korektne, všetky odkazy na stránke smerujú na cestu www.domena.com/... a nie www.domena.com/nieco/
Což je správně, protože takhle vám ty stránky posílá ten IIS server, který o té adrese /nieco/ nic neví. Buď tu aplikaci přesuňte do adresáře /nieco/ i na tom IIS serveru, nebo použijte jiný doménový název, abyste mohl i na Nginxu mít tu aplikaci v kořenovém adresáři. Třetí možnost je na Nginxu všechny adresy přepisovat, ale to nedoporučuju, protože je dost pravděpodobné, že se vám nepodaří přepsat je úplně všechny, a pak budete řešit problémy, proč některé věci nefungují a jiné ano.
7.3.2017 23:17 aaa
Rozbalit Rozbalit vše Re: Nginx reverzny proxy - location /nieco/ smer iny webserver
Odpovědět | | Sbalit | Link | Blokovat | Admin
Lepší by bylo, přidat další DNS záznam na firewall a na nginxu mít dva virtuální http(s) servery, jeden přímo servírovaný z firewallu a druhý přesměrovaný na ten iisserver ve vnitřní síti. Pak není třeba řešit, jestli location přesmerovat aliasem, rootem, proxy pass, či co z dotazů přepisovat...
8.3.2017 09:46 nobody22
Rozbalit Rozbalit vše Re: Nginx reverzny proxy - location /nieco/ smer iny webserver
Odpovědět | | Sbalit | Link | Blokovat | Admin
ďakujem opäť za podnetné návrhy, určite budú využité

zatiaľ sa podarilo dosiahnuť funkčnosť nasledovným:

Na IIS pridať na sajte, Virtual Directory "/nieco" (s Application path /nieco), ktorý smeruje do koreňa aplikácie c:\Inetpub\Aplikacia

na Nginx-e konfigurácia bez lomítka

upstream iisserver{ 
      server 192.168.1.1:81;
} 

server {
    location = /nieco {
        return 302 /nieco/;
    }

    location /nieco/ {
        proxy_pass  http://iisserver;     
    }

    location / {
        root   /usr/share/nginx/html;
    }
} 
následne je aplikácia plne funkčná na ceste www.domena.com/nieco/ uvidíme ako to bude chodiť, druhá fáza bude pridať tam SSL https protokol ...

vďaka

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.