Помогите правильно настроить passenger+nginx

36 views
Skip to first unread message

kukhl

unread,
Jun 19, 2009, 10:44:35 AM6/19/09
to RubyOnRails to russian
Я плохо разбираюсь в настройке nginx, но собрал из разных источников
конфигурацию, которая, вроде бы, работает как мне надо. Но на
некоторые ее части смотрю как баран на новые ворота. А хотелось бы
понимать, чтобы уметь поправить, если что.

Требования такие: статику должен отдавать nginx, при этом лепить на
нее expires (для YSlow оптимизации)

Вот, собственно, конф с комментариями:

----

server {

# базовые настройки, адреса логов, тут все понятно
listen 80 default;
server_name mysite.ru;
root /var/www/apps/mysite/current/public;
access_log /var/www/apps/mysite/shared/log/mysite.access.log main;
error_log /var/www/apps/mysite/shared/log/mysite.error.log notice;

# это из одной из веток группы, в принципе ясно, post запросы отдаем
пассажиру
location / {
default_type text/html;
if ($request_method = POST) {
passenger_enabled on;
break;
}

# все что в этих папках - лепим expires, чтоб браузер два раза не
скачивал
location ~ ^/(images|javascripts|stylesheets)/ {
expires 10y;
}

# собственно, отдача статики. не дублируется ли тут предыдущий пункт
по сути?
if ($request_uri ~* "\.(ico|css|js|gif|jpe?g|png)\?[0-9]+$") {
expires max;
break;
}

# вот эти три строчки совсем непонятны
try_files /maintenance.html
$uri $uri/index.html $uri.html
@modrails;
}


location @modrails {
passenger_enabled on;
}

}

---------

Возможно, тут много лишнего, или наоборот чего-то не хватает?

Спасибо за помощь, очень хочу разобраться.

Роман Смирнов

unread,
Jun 19, 2009, 12:03:20 PM6/19/09
to ror...@googlegroups.com
http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#try_files

19 июня 2009 г. 18:44 пользователь kukhl (ku...@mail.ru) написал:

Max Lapshin

unread,
Jun 19, 2009, 12:05:08 PM6/19/09
to ror...@googlegroups.com
А так ли нужны тут try_files?

kukhl

unread,
Jun 20, 2009, 4:49:42 AM6/20/09
to RubyOnRails to russian
Спасибо за ссылку. тогда правильно ли я понял, что последовательно
проверяется наличие maintanance.html, затем закешированных страниц, и
только если ничего этого нет - запрос отдается пассенжеру.

Спасибо, теперь я, кажется, понимаю, что к чему.

Роман Смирнов

unread,
Jun 20, 2009, 6:06:07 AM6/20/09
to ror...@googlegroups.com
Насколько я понимаю, алгоритм таков:
1) если файл /maintenance.html существует - отдать его.
2) если существует файл по запрошенному адресу - отдать его.
3) если существует директория по запрошенному адресу, а в ней файл
index.html, то отдать файл index.html из корня этой директории.
4) если существует файл по запрошенному адресу + расширение .html -
отдать его. (вот это как раз проверка на закешированные страницы)
5) если до сих пор ничего не найдено, то передать управление
passenger`y, пусть сам разбирается...

P.S. Там по ссылке не только про try_files, но и про все core
директивы авторское объяснение есть...

20 июня 2009 г. 12:49 пользователь kukhl (ku...@mail.ru) написал:

Reply all
Reply to author
Forward
0 new messages