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