Hello! On Sat, Dec 28, 2013 at 05:57:13AM -0500, buddha wrote:
> привет всем. > > есть 2 вопроса: > > 1. Понадобилось сделать чпу. Были ссылки вида > http://www.host.ru/news/view?id=12 надо было переделать в виде > http://www.host.ru/category/name_12 > > Сделал это с помощью proxy_pass вот так: > > location ~ .+/.+_(\d+)$ { > proxy_pass http://$server_name/news/view?id=$1 > } > > но возникла проблема. для хоста www.host.ru это работает нормально, а для > хоста help.host.ru пишет no resolver defined > > поправил это вот таким способом > > location ~ .+/.+_(\d+)$ { > resolver 8.8.8.8; > proxy_pass proxy_pass http://$server_name/news/view?id=$1 > } > > конфиги для www.host.ru и help.host.ru - идентичные, отличаются только > server_name и root_dir > > Вопрос: почему для первого хоста все работает и без resolver, а для второго > прописывать обязательно? Когда-то я думал, что rewrite'ы - это плохо. Теперь я понимаю, что rewrite'ы по сравнению с перменными в proxy_pass - это детский лепет. Что до вопроса, то ответ на него есть в документации тут: http://nginx.org/r/proxy_pass/ru Резолвер не нужен, если проксирование происходит на имя сервера, для которого описан upstream (возможно, неявно, через proxy_pass на это имя). > 2. Правильно ли таким образом делать чпу? с помощью rewrite не получилось. Нет. Самое правильно решение - делать всё это в приложении, на нормальном языке программирования. Но proxy_pass с переменными однозначно хуже, чем даже rewrite'ы. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
