Portál AbcLinuxu, 5. května 2025 21:23

Dotaz: reverzny proxy nginx

6.4.2021 21:29 fero11
reverzny proxy nginx
Přečteno: 958×
Odpovědět | Admin
Mam 2x apache v LAN na roznych IP
192.168.1.104
192.168.1.106
servery bezia bez problemov. Chcel by som dat pred ne nginx nastaveny ako reverzny proxy (dovod: chcem ich mat obidva pristupne z vonka na http porte 80 (ak sa podari, tak neskor na 443) a mam len jednu verejnu IP). Obidva apache som nastavil aby pocuvali na porte 8080 v /etc/apache2/ports.conf a aj v /etc/apache2/sites-available/. Na dalsej IP sedi nginx
192.168.1.105
Postupoval som pripblizne podla toho manualu. Zatial sa pohybujem len v LAN. Ako router pouzivam pfsense a v dns resolvery som si pridal k IP adresam aj Host Overrides, takze dajme tomu
192.168.1.104 mam pod domena1.sk
192.168.1.106 mam pod domena2.sk
v nginx som vymazal defaul config a podla manualu som nastavil
rm -rf /etc/nginx/sites-enabled/*
nano /etc/nginx/sites-available/000-default
server {
    access_log off;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080;
    }
}
ln -s /etc/nginx/sites-available/000-default /etc/nginx/sites-enabled/000-default
a pre domena1.sk
nano /etc/nginx/sites-available/domena1.sk
server {
    listen 80;
    server_name domena1.sk www.domena1.sk;

    location / {
        proxy_pass http://192.168.1.104:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
ln -s /etc/nginx/sites-available/domena1.sk /etc/nginx/sites-enabled/domena1.sk
systemctl reload nginx
Ocakaval som, ked v prehliadaci zadam domena1.sk, tak nginx to nasmeruje na 192.168.1.104:8080, ale nefunguje to. Mam ten conf v nginx nejak zle nastaveny ? Trapim sa s tym uz dlhsiu dobu
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

MMMMMMMMM avatar 6.4.2021 22:05 MMMMMMMMM | skóre: 44 | blog: unstable | Valašsko :-)
Rozbalit Rozbalit vše Re: reverzny proxy nginx
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zeptám se blbě, ale domena1.sk odkazuje na IP adresu serveru s nginxem? Pokud jsi v LAN a zadáš do prohlížeče http://192.168.1.104:8080/ vidíš něco? Pokud zadáš http://domena1.sk/ vidíš to samé za předpokladu, že domena1.sk = 192.168.1.105? Provozuju nginx jako reverzní proxy pro mnoho http serverů v síti a funguje to výborně.
Linux Dokumentační Projekt - PDF ke stažení
7.4.2021 06:42 fero11
Rozbalit Rozbalit vše Re: reverzny proxy nginx
Ne, domena1.sk odkazuje na IP 192.168.1.104 ako som napisal v prvom prispevku
192.168.1.104 mam pod domena1.sk
192.168.1.106 mam pod domena2.sk
nginx nema domenu a je na 192.168.1.105
ping domena1.sk
PING domena1.sk (192.168.1.104) 56(84) bytes of data.
64 bytes from domena1.sk (192.168.1.104): icmp_seq=1 ttl=64 time=0.470 ms
64 bytes from domena1.sk (192.168.1.104): icmp_seq=2 ttl=64 time=0.430 ms
64 bytes from domena1.sk (192.168.1.104): icmp_seq=3 ttl=64 time=0.719 ms

ping domena2.sk
PING domena2.sk (192.168.1.106) 56(84) bytes of data.
64 bytes from domena2.sk (192.168.1.106): icmp_seq=1 ttl=64 time=0.551 ms
64 bytes from domena2.sk (192.168.1.106): icmp_seq=2 ttl=64 time=0.561 ms
64 bytes from domena2.sk (192.168.1.106): icmp_seq=3 ttl=64 time=0.823 ms
Toto http://192.168.1.104:8080 aj toto http://domena1.sk:8080 funguje, lebo vtedy idem rovno na apache.

Ked zadam http://domena1.sk, alebo http://192.168.1.104, tak sa nic nedeje (web je nedostupny).

Ked zadam IP adresu nginxu 192.168.1.105, tak vidim to co aj na http://192.168.1.104:8080 a http://domena1.sk:8080.

OK, skusil som si do konfiguraka nginx pridat dalsi server blok pre domena2.sk
server {
    listen 80;
    server_name domena2.sk www.domena2.sk;

    location / {
        proxy_pass http://192.168.1.106:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
systemctl reload nginx
Ked zadam 192.168.1.106, alebo domena2.sk tak toto funguje normalne (ale nefunguje 192.168.1.106:8080 ani domena2.sk:8080, ale teoreticky by to malo fungovat, ci ?).

Zatial co 192.168.1.104, alebo domena1.sk stale nefunguju (ale funguje 192.168.1.104:8080 aj domena1.sk:8080).

Zda sa mi to cele nejake divne

7.4.2021 08:33 MP
Rozbalit Rozbalit vše Re: reverzny proxy nginx
Ty jsi ty priklady nepochopil

domena1.sk a domena2.sk musi mit IP revezni proxy, cili 192.168.1.105.

A vubec, pokud jsou ty apache na ruznych ip, tak vubec netreba saskovat s nejakou 8080.
7.4.2021 08:51 fero11
Rozbalit Rozbalit vše Re: reverzny proxy nginx
Vieme na akych IP adresach su domena1.sk a domena2.sk. Napisal som, ze v LAN to funguje dobre (ano v LAN ziadny reverzny proxy nepotrebujem). Pozri sa na moj prvi prispevok, kde pisem, ze tieto 2 apache by som chcel mat pristupne aj z vonka na standardnych portoch a mam len jednu verejnu IP, preto potrebujem reverzny proxy.
7.4.2021 09:26
Rozbalit Rozbalit vše Re: reverzny proxy nginx
Pokud je A DNS záznam nebo zápis v hosts pro domena1.sk roven 192.168.1.104 a pro domena2.sk 192.168.1.106, tak se prohlížeč v LAN nedozví, že má lézt na nějakou proxy na 192.168.1.105.
7.4.2021 10:10 fero11
Rozbalit Rozbalit vše Re: reverzny proxy nginx
Ono to funguje nejak divne.

Ako som spomenul, tak pridal som si do nginx configu aj druhy server blok pre druhy apache server. takze to vyzera takto
nano /etc/nginx/sites-available/domena1.sk
server {
    listen 80;
    server_name domena1.sk www.domena1.sk;

    location / {
        proxy_pass http://192.168.1.104:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

server {
    listen 80;
    server_name domena2.sk www.domena2.sk;

    location / {
        proxy_pass http://192.168.1.106:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
V LAN mi vobec nefunguje http://192.168.1.104 a ani http://domena1.sk (ale zase mi to funguje s portom 8080 (aj IP aj domena))

V LAN mi ale funguje http://192.168.1.106 a aj http://domena2.sk (ale uz mi to nefunguje s portom 8080 (co je vlastne OK))

Teraz som nastavil NAT z 192.168.1.105 na verejnu IP. Mam zaregistrovane 2 verejne free dns domeny. V konfiguraku nginxu som si tie domeny nastavil a funguje mi to presne naopak ako v LAN (pripajam sa z vonka)

Z WAN mi vobec nefunguje http://domena2.sk a vypise 502 bad gateway nginx

Z WAN mi ale funguje http://domena1.sk. Ked zadam do brovsera http://xx.xx.xx.xx (verejnu IP) tak sa zobrazi to co je na prvom apache (cize to co je na http://domena1.sk).

Upozornujem, ze ak to skusam z vonka tak http://domena1.sk a http://domena2.sk su samozrejme ine (ktore som vymenil za verejne a nechcem ich tu zverejnovat)
MMMMMMMMM avatar 7.4.2021 10:31 MMMMMMMMM | skóre: 44 | blog: unstable | Valašsko :-)
Rozbalit Rozbalit vše Re: reverzny proxy nginx
Pokud funguje v LAN:
http://192.168.1.104:8080
http://192.168.1.106
Tak v konfiguraci musíš mít:
proxy_pass http://192.168.1.104:8080; (u první domény)
proxy_pass http://192.168.1.106; (u druhé domény)
7.4.2021 10:59
Rozbalit Rozbalit vše Re: reverzny proxy nginx
To, že ti http server běží na portu 8080, se prohlížeče nemají jak dozvědět, když jim to ty nezadáš přímo do URL. Prohlížeče ve WAN mají naději, že až to nakonfiguruješ správně, tak jim to předžvejkne ten nginx.
7.4.2021 11:31 fero11
Rozbalit Rozbalit vše Re: reverzny proxy nginx
zaujmalo by aj mna ako by to malo byt spravne nakonfigurovane :-D

7.4.2021 14:46 fero11
Rozbalit Rozbalit vše Re: reverzny proxy nginx
Ako by to teda islo vyriesit, ked mam v LAN 2 a viac serverov. Je mi jasne, ze v LAN to bude vsetko fungovat ako na IP adresach, tak aj na lokalnych DNS menach (v pripade viac vhostov na jednej IP).

Ale ako pristupovt k serverom z vonka na standardnom porte 80/443? Urcite to nginx dokaze, ale zrejme mam problemy s nastavenim
7.4.2021 15:03 bigBRAMBOR | skóre: 37
Rozbalit Rozbalit vše Re: reverzny proxy nginx
uz jsi si opravil ty DNS? zaklad je ze pravy ty tvoje servery s apachem nepotrebuji DNS jmeno, ale obe dve domeny musi ukazovat na proxy. Tam dve sekce pro kazdou domenu zvlast, je jedno na jakem portu, klidne na stejnem, v sekci location pro kazdu domenu proxy pass na IP a port. Apache pak jsou nastavene tak aby mely pro spravnou domenu virtualhost.
7.4.2021 15:53 fero11
Rozbalit Rozbalit vše Re: reverzny proxy nginx
Toto bolo spravne nakopnutie (dikes). Mna blbca to mohlo tiez napadnut, ze v Host Overrides to mam smerovat na nginx a nie na apache backendy.

Ten druhy apache mi este stale hadzal 502 bad gateway nginx, ale dalsia moja chyba bola, ze v config vhoste som mal stale
VirtualHost *:80
teraz to funguje ako v LAN, tak aj z WAN. A mozem zacat zapasit z letsencrypt

este raz dik

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.