Ngnix reescribe con catchall server_name

0

Estoy tratando de hacer una reescritura basada en un nombre de servidor general.

Por lo tanto, me gustaría cualquier dominio que llegue a este servidor, por ejemplo

demo.example.com

ser reescrito a

example.org?site=demo.example.com

Actualmente tengo la configuración del servidor catchall como

server {
    listen 80 default_server;

    server_name ~^(.+)$;


    location / {
            rewrite ^ http://example.org?site=$host permanent;
    }
}

Sin embargo, la configuración anterior me está llevando a

http://example.org/?site=~ ^ (. +) $

He intentado usar $ server_name en la reescritura sin suerte tampoco. ¿Algunas ideas?

Adén
fuente
¿Qué solicitud te da esa redirección?
Alexey Ten
no está capturando el nombre del servidor ( ~^(?<ibecomeavariable>.+)), pero como dookie señala a continuación, tampoco necesita hacerlo.
AD7six

Respuestas:

1

Puedes tener mejor suerte con esto.

server {
    listen 80 default_server;

    location / {
       rewrite ^/(.*)$ http://example.org/$1?site=$host permanent;
    }
}
drogadicto
fuente
1
sin bloque de ubicación y simplemente return 301 http://example.com$request_uri?site=$host;sería "mejor".
AD7six