¿Es posible hacer algo así con nginx?
if ( $http_user_agent = "wget" ){
server {
listen 11.11.11.11:1111;
root /website1/;
server_name example.com www.example.com;
else
server {
listen 22.22.22.22:22222;
root /website2/;
server_name example2.com www.example2.com;
}
linux
nginx
configuration
usuario421936
fuente
fuente
Respuestas:
El módulo de reescritura de Nginx sí tiene una
if
directiva (consulte la documentación vinculada para ver ejemplos), pero noelse
. El equivalente paraelse
sería todo lo que no se modifica con unif
.Puede usar
if
dentro de unserver { }
pero no al revés. Ni siquiera tendría la condición comparada en su si antes de una solicitud que ya necesita el servidor. Allí, solo puede servir contenido cuando el agente de usuario es (o no)wget
.También tenga en cuenta que no debe usarlo en el
if
interior,location
ya que puede no funcionar como se desea (consulte If Is Evil ).fuente
En el formulario proporcionado, no funcionará: probar el Agente de usuario HTTP implica que la solicitud ya se recibió. Eso solo es posible si algún
server
bloque ya estaba definido. ¿Realmente desea iniciar nuevos servidores dependiendo de la cadena de User-Agent de una solicitud que recibió en otro lugar?Si solo desea servir contenido diferente, redirija a diferentes rutas, etc., dependiendo de las partes de la solicitud, como el User-Agent, eso es posible, por ejemplo, con http://nginx.org/en/docs/http/ngx_http_rewrite_module. html
fuente