Я перемещаю старый веб-сайт на новый хост на базе nginx. Чтобы сохранить URL-адрес (который полностью изменился), у меня есть файл со списком сопоставлений. Я хочу использовать это с модуль карты.
Внутри /etc/nginx/nginx.conf http{ ... }
Я имею в виду PERL и функцию нижнего регистра:
#Include PERL and have a function for lowercasing the incoming URL
perl_modules perl/lib;
# function to lowercase incoming strings like the URL
perl_set $uri_lowercase 'sub {
my $r = shift;
my $uri = $r->uri;
$uri = lc($uri);
return $uri;
}';
Конфигурация моего сайта, которая находится в файле /etc/nginx/sites-enabled/notessensei
(Спасибо, Алексей, чтобы указать на это) выглядит так:
server {
listen www.notessensei.com:80;
root /home/stw/www;
index index.html;
server_name www.notessensei.com notessensei.com;
location / {
map $uri_lowercase $new {
include /home/stw/www/blognginx.map;
}
if ($new) {
rewrite ^ $new redirect;
}
}
error_page 404 /blog/404.html;
}
Файл сопоставления blognginx.map
выглядит так:
/blog/d6plinks/shwl-6bv35s /blog/2005/04/garbage-in-.html;
/blog/d6plinks/shwl-6c6ggp /blog/2005/05/just-me.html;
/blog/d6plinks/shwl-6c6gh4 /blog/2005/05/it-is-quotmake-your-own-caption-quot-time.html;
/blog/d6plinks/shwl-6c997j /blog/2005/05/big-business-wwjd.html;
/blog/d6plinks/shwl-6ca5qb /blog/2005/05/domino-on-solaris-anyone.html;
/blog/d6plinks/shwl-6ce65j /blog/2005/05/going-places-vietnam.html;
/blog/d6plinks/shwl-6ce6c9 /blog/2006/02/umsys-as-old-as-unix-sort-of.html;
около 1300 линий. Когда я делаю service nginx configtest
Я получаю потерпеть поражение. Когда я не использую include
заявление я получаю ОК. Теперь у меня 2 вопроса:
Помощь очень ценится.
Разобрался, спасибо указателям Алексея. Возникла 4-х кратная проблема:
service nginx configtest
говорит меньше, чем nginx -t
, опять Алексей указал мне тудаТеперь мой /etc/nginx/nginx.conf
имеет 2 дополнительные строки в http {}
раздел:
## Increase bucket for big redirects
map_hash_bucket_size 256;
map_hash_max_size 4092;
и /etc/nginx/sites-enabled/notessensei
файл выглядит так:
map $uri_lowercase $new {
include /home/stw/www/blognginx.map;
}
server {
listen www.notessensei.com:80;
root /home/stw/www;
index index.html index.htm;
server_name www.notessensei.com notessensei.com;
location / {
if ($new) {
return 301 $new;
}
}
error_page 404 /blog/404.html;
}
Если вы хотите увидеть это в действии, выберите любую запись в блоге из wissel.net и примените часть uri к notessensei.com - работает как шарм с> 1200 записями.
map
директива должна быть непосредственным потомком http
блок.
синтаксис: строка карты $ переменная {...}
дефолт: -
контекст: http
В вашем случае вы должны поместить его рядом с server
блок, потому что ваш настраиваемый файл конфигурации включен прямо внутри http
блок в nginx.conf.
map $uri_lowercase $new {
include /home/stw/www/blognginx.map;
}
server {
...
}