Rewrite+resolver

buddha nginx-forum at nginx.us
Sat Dec 28 10:57:13 UTC 2013


привет всем.

есть 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, а для второго
прописывать обязательно?

2. Правильно ли таким образом делать чпу? с помощью rewrite не получилось.

вот конфиг для www.host.ru. Хотелось бы услышать как улучшить этот конфиг, в
чем ошибка, и как сделать чпу с помощью rewrite(возможно ли)

################################

server {
        listen 81;
        server_name     www.host.ru;

        root    /var/www/host.ru/www/;

        access_log  /var/log/nginx/www.host.access.log;
        error_log /var/log/nginx/www.host.error.log;

        location ~ .+/.+_(\d+)$ {
                proxy_pass http://$server_name/news/view?id=$1&internal=1;
        }

        location / {
                try_files $uri /index.php$uri?$query_string;
        }

	location /index.php {
                internal;
                root /var/www/host.ru/www;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_ignore_client_abort off;
                fastcgi_buffers 256 16K;
                fastcgi_buffer_size 32k;
                fastcgi_split_path_info         ^(.+\.php)(.*)$;

                fastcgi_param  CITY       $city;
                fastcgi_param  SCRIPT_FILENAME 
$document_root$fastcgi_script_name;
                fastcgi_param  PATH_INFO        $fastcgi_path_info;
                include   fastcgi_params;
        }

	location ~* \.php$ {

                root /var/www/host.ru/www/;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_ignore_client_abort off;
                fastcgi_split_path_info         ^(.+\.php)(.*)$;

                fastcgi_param  CITY       $city;
                fastcgi_param  SCRIPT_FILENAME 
$document_root$fastcgi_script_name;
                fastcgi_param  PATH_INFO        $fastcgi_path_info;
                fastcgi_buffers 256 16K;
                fastcgi_buffer_size 32k;
                include   fastcgi_params;
        }

}
################################

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,245884,245884#msg-245884



Подробная информация о списке рассылки nginx-ru