Re: два правила работают по отделности но не вместе

shambler81 nginx-forum at nginx.us
Tue Jan 22 12:43:49 UTC 2013


Добрый день, сегодня нашел почему именно не отррабатывают правила но
try_file насколько я понял в старом nginx  не понимают $
фактически проблема была вот в этом


location ~* ^.+\.(htm|html)$ {
			root /var/www/$host/web;
			if ($host ~* ^(www\.)(.+)) {
		        set $HBW $2;
		        root   /var/www/$HBW/web;
			}
			try_files $uri /index.php;
			access_log off;
		        expires 30d;
			}
А следовательно если файл фактически отсутствует то передать его статически
из php
а  в данном локейшене отдается только статика  и php попросту не работает
Соответственно если я добавлю сюда

index index.php index.html index.htm;
				    	root /var/www//web/;
					proxy_pass http://$host:82;
   					proxy_set_header X-Real-IP  $remote_addr;
     					proxy_set_header Host $host;
					proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
То все работает
но html больше всегда отдается через php
А Мне нужно только если  файла нет то отдавать   как php и А если есть то
просто отдавать статику как и всегда.

следовательно я написал следующее условие что при  try_files $poteryan
отдавать
location $poteryan
root /var/www//web/;
					proxy_pass http://$host:82;
   					proxy_set_header X-Real-IP  $remote_addr;
     					proxy_set_header Host $host;
					proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

И по идее насколько я понимаю если файл потерян то отдастся  все пойдет 
напрямую без nginx
что вполне устроит. фактически такие сайты будут работать без кеширования
html
Но почему то $potehyan не работает
Подскажите пожалуйста почему ?

nginx очень старый.

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



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