[emerg] directive "rewrite" is not terminated by ";" in

Андрей Василишин a.vasilishin на kpi.ua
Чт Июн 28 18:28:29 UTC 2012


28.06.2012 21:19, Валентин Бартенев пишет:
> On Thursday 28 June 2012 22:04:41 Андрей Василишин wrote:
>> В общем решил я перевести рирайты апача на нгинкс, воспользовался одним
>> из автоматических конверторов, делаю релад, выдает сабжевую ошибку, при
>> чем проверил, все рирайты точно заканчиватся на  last;
>> В общем комментирую даже строчку с этой ошибкой, вылазит новая, в другой
>> строке.
>> Есдинственное на что пока падают подозрения - длина строки, нет ли у
>> нгинкса случаем ограничения на длину строки в конфиге?
>
> Вы конфиг бы для начала показали.
>


server {
   listen  2.2.2.2:80;
   server_name  site.com;
   access_log  /var/log/nginx/site.com.access.log  main;
   #access_log off;
   error_log   /var/log/nginx/site.com.error.log  error;
         open_file_cache max=10000 inactive=120s;
         open_file_cache_valid 30s;
         open_file_cache_min_uses 2;
         open_file_cache_errors off;
   location = / {
         limit_req   zone=two  burst=2 nodelay;
         index index.html;
         root   /var/www/site.com;
   }
   location = /index.html {
         limit_req   zone=two  burst=2 nodelay;
         root   /var/www/site.com;
   }
   location / {
         limit_req   zone=two  burst=2 nodelay;
         root   /var/www/site.com;
         index index.php;
         try_files $uri $uri/ /index.php?$args;
         rewrite ^/page/(.*)$ /index.php?cstart=$1 last;
#       rewrite 
^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).html(/?)+$ /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6&seourl=$6 
last;
#       rewrite 
^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*).html(/?)+$ 
/index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 
last;
#       rewrite 
^/([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*).html(/?)+$ 
/engine/print.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 
last;
#       rewrite ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).html(/?)+$ 
/index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4&seourl=$4 
last;
         rewrite 
^/([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ 
/index.php?newsid=$4&news_page=$2&cstart=$3&seourl=$5&seocat=$1 last;
         rewrite ^/([^.]+)/page,([0-9]+),([0-9]+)-(.*).html(/?)+$ 
/index.php?newsid=$3&news_page=$2&seourl=$4&seocat=$1 last;
         rewrite ^/([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ 
/engine/print.php?news_page=$2&newsid=$3&seourl=$4&seocat=$1 last;
         rewrite ^/([^.]+)/([0-9]+)-(.*).html(/?)+$ 
/index.php?newsid=$2&seourl=$3&seocat=$1 last;
         rewrite ^/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ 
/index.php?newsid=$3&news_page=$1&cstart=$2&seourl=$4 last;
         rewrite ^/page,([0-9]+),([0-9]+)-(.*).html(/?)+$ 
/index.php?newsid=$2&news_page=$1&seourl=$3 last;
         rewrite ^/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ 
/engine/print.php?news_page=$1&newsid=$2&seourl=$3 last;
         rewrite ^/([0-9]+)-(.*).html(/?)+$ 
/index.php?newsid=$1&seourl=$2 last;
#       rewrite ^/([0-9]{4})/([0-9]{2})/([0-9]{2})(/?)+$ 
/index.php?year=$1&month=$2&day=$3 last;
#       rewrite ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page/([0-9]+)(/?)+$ 
/index.php?year=$1&month=$2&day=$3&cstart=$4 last;
#       rewrite ^/([0-9]{4})/([0-9]{2})(/?)+$ 
/index.php?year=$1&month=$2 last;
#       rewrite ^/([0-9]{4})/([0-9]{2})/page/([0-9]+)(/?)+$ 
/index.php?year=$1&month=$2&cstart=$3 last;
#       rewrite ^/([0-9]{4})(/?)+$ /index.php?year=$1 last;
#       rewrite ^/([0-9]{4})/page/([0-9]+)(/?)+$ 
/index.php?year=$1&cstart=$2 last;
         rewrite ^/tags/([^/]*)(/?)+$ /index.php?do=tags&tag=$1 last;
         rewrite ^/tags/([^/]*)/page/([0-9]+)(/?)+$ 
/index.php?do=tags&tag=$1&cstart=$2 last;
         rewrite ^/xfsearch/([^/]*)(/?)+$ /index.php?do=xfsearch&xf=$1 last;
         rewrite ^/xfsearch/([^/]*)/page/([0-9]+)(/?)+$ 
/index.php?do=xfsearch&xf=$1&cstart=$2 last;
         rewrite ^/user/([^/]*)/rss.xml$ 
/engine/rss.php?subaction=allnews&user=$1 last;
         rewrite ^/user/([^/]*)(/?)+$ 
/index.php?subaction=userinfo&user=$1 last;
         rewrite ^/user/([^/]*)/page/([0-9]+)(/?)+$ 
/index.php?subaction=userinfo&user=$1&cstart=$2 last;
         rewrite ^/user/([^/]*)/news(/?)+$ 
/index.php?subaction=allnews&user=$1 last;
         rewrite ^/user/([^/]*)/news/page/([0-9]+)(/?)+$ 
/index.php?subaction=allnews&user=$1&cstart=$2 last;
         rewrite ^/user/([^/]*)/news/rss.xml(/?)+$ 
/engine/rss.php?subaction=allnews&user=$1 last;
         rewrite ^/lastnews(/?)+$ /index.php?do=lastnews last;
         rewrite ^/lastnews/page/([0-9]+)(/?)+$ 
/index.php?do=lastnews&cstart=$1 last;
         rewrite ^/catalog/([^/]*)/rss.xml$ /engine/rss.php?catalog=$1 last;
         rewrite ^/catalog/([^/]*)(/?)+$ /index.php?catalog=$1 last;
         rewrite ^/catalog/([^/]*)/page/([0-9]+)(/?)+$ 
/index.php?catalog=$1&cstart=$2 last;
         rewrite ^/newposts(/?)+$ /index.php?subaction=newposts last;
         rewrite ^/newposts/page/([0-9]+)(/?)+$ 
/index.php?subaction=newposts&cstart=$1 last;
         rewrite ^/favorites(/?)+$ /index.php?do=favorites last;
         rewrite ^/favorites/page/([0-9]+)(/?)+$ 
/index.php?do=favorites&cstart=$1 last;
         rewrite ^/rules.html$ /index.php?do=rules last;
         rewrite ^/statistics.html$ /index.php?do=stats last;
         rewrite ^/addnews.html$ /index.php?do=addnews last;
         rewrite ^/rss.xml$ /engine/rss.php last;
         rewrite ^/sitemap.xml$ /uploads/sitemap.xml last;
         rewrite ^/([^.]+)/page/([0-9]+)(/?)+$ 
/index.php?do=cat&category=$1&cstart=$2 last;
         rewrite ^/([^.]+)/?$ /index.php?do=cat&category=$1 last;
         rewrite ^/([^.]+)/rss.xml$ /engine/rss.php?do=cat&category=$1 last;
         rewrite ^/page,([0-9]+),([^/]+).html$ 
/index.php?do=static&page=$2&news_page=$1 last;
         rewrite ^/print:([^/]+).html$ 
/engine/print.php?do=static&page=$1 last;
         rewrite ^/([^/]+).html$ /index.php?do=static&page=$1 last;
         rewrite ^/pl/(.*?)/(.*).txt /playlistJSON.php?code=$1&playlist=$2;
   }
   location ~ \.php$ {
       limit_req   zone=two  burst=5 nodelay;
       proxy_pass http://backend$request_uri;
       proxy_http_version 1.1;
       proxy_set_header Connection "";
       proxy_redirect off;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_connect_timeout 20;
       proxy_send_timeout 20;
       proxy_read_timeout 20;
   }
   location ~ playlist.php$ {
       proxy_pass http://backend;
       proxy_redirect off;
       proxy_http_version 1.1;
       proxy_set_header Connection "";
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_connect_timeout 60;
       proxy_send_timeout 60;
       proxy_read_timeout 60;
   }
   location ~ admin.php$ {
       allow 1.1.1.1;
       deny all;
       proxy_pass http://backend;
       proxy_redirect off;
       proxy_http_version 1.1;
       proxy_set_header Connection "";
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_connect_timeout 60;
       proxy_send_timeout 60;
       proxy_read_timeout 60;
   }
   location ~ ^/cgi-bin/.*\.cgi$ {
       proxy_pass http://backend;
       proxy_redirect off;
   }
   # Static files location
   location ~* 
^.+\.(swf|ver|ver|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ 
{
       root   /var/www/site.com;
   }
   location /nginx_status {
       stub_status on;
       access_log   off;
       allow 1.1.1.1;
       deny all;
   }

}




>
> Все существующие автоматические конверторы, что мне доводилось видеть, выдают
> нечитабильную, излишне усложненную, не оптимальную кашу, а часто просто не
> работающую, или работающую, но не совсем так.

Использовал этот
http://www.anilcetin.com/convert-apache-htaccess-to-nginx/
Правда опускал if ($rule_0 = "")

> Используя собственную голову, переводить "рирайты апача на нгинкс" получается
> гораздо эффективнее, полезнее и избавляет от головной боли в будущем. А во
> многих случаях, никаких rewrite и if в nginx вообще писать не нужно.
>

Да, но сейчас сайт под ддосом, а быстро я рирайты не умею переводить.

> Наглядный пример в конце:
> http://nginx.org/en/docs/http/converting_rewrite_rules.html#converting_mongrel_rules

Этот пример знаю и всякие
RewriteCond %{REQUEST_FILENAME} -f в конверторы даже не сую





-- 
WBR, Andrey Vasilishin CDIG1-UANIC, CDIG1-RIPE




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