é possível fazer algo assim com o 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
user421936
fonte
fonte
Respostas:
O módulo de reescrita do Nginx possui
if
diretiva (consulte a documentação vinculada para exemplos), mas nãoelse
. O equivalente aelse
seria tudo o que não é modificado com umif
.Você pode usar
if
dentro de um,server { }
mas não o contrário. Você nem teria a condição comparada no seu if antes de uma solicitação que já precisa do servidor. Lá, você só pode veicular conteúdo quando o agente do usuário é (ou não é)wget
.Observe também que você não deve usar
if
dentrolocation
, pois pode não funcionar como desejado (consulte Se é mau ).fonte
No formulário fornecido, não funcionará: testar o Agente do Usuário HTTP implica que a solicitação já foi recebida. Isso só é possível se algum
server
bloco já estiver definido. Deseja realmente iniciar novos servidores, dependendo da cadeia de agente do usuário de uma solicitação que você recebeu em outro lugar?Se você deseja apenas exibir conteúdo diferente, redirecione para caminhos diferentes, etc., dependendo de partes da solicitação como o User-Agent, isso é possível, por exemplo, com http://nginx.org/en/docs/http/ngx_http_rewrite_module. html
fonte