Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem jak najít číslo portu pro apache na jakém poslouchá

čumim jako puk,ale nejsem s to najít v php skriptu (phpinfo() ) číslo portu na jakém poslouchá. A to právě hledám , chci ho zjistit zevnitř skriptu. Ono to sice je "stabilní" parameter , který se často nemění , a určitě jde najít někde v httpd.conf , ale řeším , jak to vyčíst phpčkem.

příklad pro pochopení:
adresa v url https://server.com:12345 je forwardována na jiný počítač s apache serverem , který poslouchá na portu 32443.

jediný co vidim je $_SERVER['SERVER_PORT'] ..... 12345, ale 32443 nikde

Předmět Autor Datum
A není forwardovana na nejakem routeru, ktery port 12345 predava ven jako 32443?
Jan Fiala 17.03.2025 11:57
Jan Fiala
Je forwardovana na nejakem routeru, ktery port 12345 predava dovnitr jako 32443. Pokud by byla forwa…
Lacso 17.03.2025 12:30
Lacso
Abych se priznal, tvou odpoved jsem moc nepochopil. Ty Apache jsou ve stejne siti nebo komunikuji pr…
Jan Fiala 17.03.2025 13:06
Jan Fiala
Já to chápu tak, že dotaz vede na router na port 12345, tento router pak ten dotaz pošle na pc s apa…
kacikac 17.03.2025 13:27
kacikac
Teoreticky, ale phpinfo sa pyta localhostu, na ktorom bezi a nema odkial vediet, ze bolo premerovane…
fleg 17.03.2025 13:33
fleg
Ví to přece z dotazu. A je to nějaké divné. Nevím jak to funguje u routeru, teď jsem to zkoušel přes…
kacikac 17.03.2025 13:54
kacikac
No a to je ten detail. nginx jsem ještě nezkoušel. Pro ostatní : ten příklad z přístupu z LAN jsem…
Lacso 17.03.2025 14:23
Lacso
$_SERVER['SERVER_PORT'] .. ti ukazuje port servera, na ktorom bezi a nie vonkajsi, takze v popise mu…
fleg 17.03.2025 12:17
fleg
Ne ,ne ne, a ještě jednou ne . Kdyby $_SERVER['SERVER_PORT'] ukazoval port servera, na ktorom bezi ,…
Lacso 17.03.2025 12:27
Lacso
Dokonce to vidím i pokud na routeru pustím, tcpdump: zvenku má komunikace port 12345, ale do LAN pos…
Lacso 17.03.2025 12:32
Lacso
Jen tak informačně, je na apache povolen info_module? Pokud ano, je ten port 32443 uveden tu? http:/…
kacikac 17.03.2025 12:59
kacikac
Ne takový modul nemám Pokud neuvedu číslo portu, tak se nikam nepřipojím!
Lacso 17.03.2025 14:22
Lacso
Jakou pouzíváš verzi Apache ? Zkus Direktivu servername nastavit následovně ServerName myservername…
HPET 17.03.2025 13:44
HPET
děkuju za radu , trpělivě jsem všechny kombinace zkoušel a oba Canonicaly zabraly , konečně nyní HTT…
Lacso 17.03.2025 14:22
Lacso
Tak je to tak že na ten nginx to umí rovnou! Se spropradeným apachem jsem se s tim šolíchal jak s pa… poslední
Lacso 17.03.2025 15:08
Lacso

Je forwardovana na nejakem routeru, ktery port 12345 predava dovnitr jako 32443.
Pokud by byla forwardovana na nejakem routeru, ktery port 12345 predava ven jako 32443, pak by komunikace neproběhla , prototože by prohlížeč posílal paket z náhodného portu na 12345 , ale vracela se mu odpověď z náhodného portu na port 32443... a prohlížeč o portu 32443 nemá šajn

Já to chápu tak, že dotaz vede na router na port 12345, tento router pak ten dotaz pošle na pc s apache na port 32443, který dotaz zpracuje. A phpinfo mu vyhazuje port 12345, přičemž on chce někde uvést ten 32443. Jak jsem psal dole, podle mě možná ten port 32443 bude uveden v server-info. A určitě se bude dát zjistit přes shell_exec nebo naparsováním config souboru apache nebo by se dalo vymyslet i něco dalšího. Ale nechápu k čemu mu to jako má být.

Ne ,ne ne, a ještě jednou ne . Kdyby $_SERVER['SERVER_PORT'] ukazoval port servera, na ktorom bezi , tak bych byl spokojený a neptal se. Ale skutečně ukazuje "vonkajsi".

Pro potvrzení: pokud v lokalní síti zadám netcat apachecomputer 12345 , logicky neodpoví

Dokonce to vidím i pokud na routeru pustím, tcpdump: zvenku má komunikace port 12345, ale do LAN posíla router komunikaci na port 32443. Ale počítač s apache
v phpinfo nikde port 32443 neuvádí.. Nebavím se o tom, že ten port mohu najít přes netstat -l -4 |grep apache, chci to znát z php skriptu.

jenom pro informaci kde se 32443/12345 port ukazuje: SERVER['HTTP_HOST'] $_ENV['SERVER_PORT'] a $_ENV['HTTP_HOST'], pokaždé je to 12345 v případě komunikace z venku, 32443 při komunikaci z LAN. Ale apache poslouchá v obou případech na portu 32443

Já to chápu tak, že HTTP Host je to co je zadané v URL, ale SERVER_PORT by mělo být vždy neměnné (32443) ... .ale není !

moment, zkusim experiment na jiném implementaci webserveru. : jiný apache se chová stejně : nejde se za boha v phpinfo dopátrat čísla portu , na kterém poslouchá . Ještě zbývá nginx . (tedy , vlastně , ehm , je to věc php nebo webserveru ...)

Jen tak informačně, je na apache povolen info_module?
Pokud ano, je ten port 32443 uveden tu?
http://localhost/server-info
Nebo i tu?
https://server.com:12345/server-info

Dál co mě napadlo, zjistit to dotazem přes shell_exec, přes to by to mělo jít 100%.
Nebo naparsováním config souboru apache nebo by se dalo určitě ještě něco vymyslet :-)
I když vůbec netuším proč to potřebuješ, když ten port přece znáš.

Jakou pouzíváš verzi Apache ?
Zkus Direktivu servername nastavit následovně

ServerName myservername.com:32443
UseCanonicalName On
Listen 32443

Popřípade v httpd.conf

ServerName myservername.com
UseCanonicalName Off
Listen 32443

.. Pokud nastavíš nebo máš nastaveno "UseCanonicalName On" musíš také nastavit "UseCanonicalPhysicalPort On" > získání "skutečného" portu

děkuju za radu , trpělivě jsem všechny kombinace zkoušel a oba Canonicaly zabraly , konečně nyní HTTP_HOST SERVER PORT ukazují odlišné hodnoty
akorát mám divný vibe , že z tak jednoduchýho dotazu se vyklubala tak dlouhá diskuze.

akorát mám pocit , jesli mi to něco nerozhasí, jestli když budu dělat directory listing, nebude to házet to interní(zvenku nedostupné) číslo portu - to si myslím, že v dokumentaci přímo zmiňují https://httpd.apache.org/docs/current/mod/core.html#usecanonicalphysicalport

Zpět do poradny Odpovědět na původní otázku Nahoru