Aquí está mi conf nginx actual:
server {
listen 90;
server_name www.domain.com www.domain2.com;
root /root/app;
location / {
try_files $uri =404;
}
location ~ /([-\w]+)/(\w+)/ {
proxy_pass bla bla
}
}
funciona bien, ambos www.domain.com
y www.domain2.com
sirven el mismo contenido.
ahora me gustaría agregar
si el usuario visita www.dominio.com y el agente de usuario es xxx, redirija a www.dominio2.com
He buscado y probado muchos métodos, pero ninguno de ellos funciona.
Respuestas:
Hay dos formas de solucionar este problema.
Tenga dos bloques de "servidor" separados para www.dominio.com y www.dominio2.com y agregue las siguientes líneas de reglas al bloque de "servidor" www.dominio.com. Esta es una forma recomendada de resolver este problema.
Si desea administrar la redirección con un solo bloque "servidor" para ambos dominios, pruebe las siguientes reglas
fuente
Paso 1: Tenga dos bloques de servidor, uno para cada dominio.com y dominio2.com.
Paso 2: Úselo correctamente, ya que es malo si se usa incorrectamente.
Aquí está la solución completa ...
fuente
La forma recomendada probablemente sería usar a
map
, también porque estas variables se evalúan solo cuando se usan.También
return 301 ...
se prefiere el uso de las reescrituras, ya que no es necesario compilar ninguna expresión regular.Aquí un ejemplo de dónde el host y el agente de usuario como una cadena concatenada se comparan con una única expresión regular:
Y esto podría ser aún más flexible, por ejemplo, si no hay 2 sino más dominios involucrados.
Aquí hacemos un mapa
www.domain.com
con los agentes de usuario a partir deAgent
ahttp://www.domain2.com
ywww.domain2.com
con la exacta de agente de usuarioOther Agent
ahttp://www.domain3.com
:Nota : necesitará nginx 0.9.0 o superior para que la cadena concatenada en el mapa funcione.
fuente