можно ли сделать что-то подобное с 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;
}
В модуле перезаписи Nginx есть if
директива (примеры см. в связанной документации), но не else
. Эквивалент для else
было бы все, что не модифицировано if
.
Ты можешь использовать if
внутри server { }
но не наоборот. Вы даже не сравнивали бы условие в вашем if перед запросом, который уже нуждается в сервере. Там вы могли обслуживать контент только тогда, когда пользовательский агент есть (или нет) wget
.
Также обратите внимание, что вы не должны использовать if
внутри location
так как это может не работать должным образом (см. Если это зло).
В приведенной форме это не сработает: тестирование HTTP User-Agent подразумевает, что запрос уже был получен. Это возможно, только если некоторые server
блок уже был определен. Вы действительно хотите запускать новые серверы в зависимости от строки User-Agent запроса, который вы получили в другом месте?
Если вы просто хотите обслуживать разный контент, перенаправлять на разные пути и т. Д., В зависимости от частей запроса, таких как User-Agent, это возможно, например с участием http://nginx.org/en/docs/http/ngx_http_rewrite_module.html