nginx atiranyitas

hogy tudnam megcsinalni nginx-ben, hogy minden hostot, ami nem valamihost vagy www.valamihost atiranyitson egy megfelelo cimre?
egy captive portal szeru dolgot szeretnek belole kihozni es fontos lenne tudni, hogy honnan jott a keres.

ezzel probalkoztam:

if ($host !~* ^(www\.)?valamihost) {
rewrite ^ http://valamihost/index.php?from=$host$request_uri? permanent;
break;
}

termeszetesen van egy DNS is ami minden hostot ugyanarra az IP-re old fel (ez mukodik).

catch all sem megy

server_name _;

Hozzászólások

listen 80 default;
megvolt?

első ránézésre működnie kéne. mit szolgál ki az egyes Host-okkal?
ennyi a server blokkod a configban?
server { listen 80 default; if () { ... } }

ha nincs másik vhost, a server_name nem kell.

sztem egyszerűbb ha csinálsz 2 vhost-ot:

server { listen 80; server_name valami www.valami; ... }
server { listen 80 default; location / { rewrite ... } }

~~~~~~~~
deb http://deb.metaltux.tk/ wheezy yazzy repack

Most igy nez ki a vhost

server {
listen 192.168.2.1:80 default;
location / {
rewrite ^ http://valamihost/index.php?from=$host$request_uri? permanent;
}
}

server {
listen 192.168.2.1:80;
server_name valamihost www.valamihost;

root /mnt/DATA/WEB/valamihost/;
index index.php index.html;

location ~ \.php$ {
..
}
}

ha beirom, hogy iajbolivck, akkor jol mukodik atiranyit a http://valamihost/index.php?from=iajbolivck/ oldalra.
de ha valamihost vagy www.valamihost -ot utok be, akkor

valamihost => http://valamihost/index.php?from=/
www.valamihost => http://valamihost/index.php?from=www.valamihost/

es ezeknek ugye maradnia kene.

Nem mintha ez annyira zavarna, de ezzel a konfiggal is ugyanazt csinalja, mint az eredetivel.

biztos nem a böngésző jegyezte meg egy korábbi rossz konfig altal küldött 301-es átirányítást?

az ilyet curl -sSi $url | sed -e '/^\r\?$/q' paranccsal szoktam tesztelni. (transzparens proxy akkor is cache-elheti a 30x headert)

~~~~~~~~
deb http://deb.metaltux.tk/ wheezy yazzy repack