Сегодня развернул Elgg на веб-сервере NGINX, и первая проблема с которой столкнулся - это небходимость замены mod-rewrite директив, которые содержатся в файле .htaccess, на соответсвующие правила для NGINX (rewrite-rules).
И первый вопрос, который у меня возник: куда нужно писать эти правила?
Rewrite-rules для Nginx указываются внутри секции server в файле настройки виртуального хоста, например /etc/nginx/sites-available/default.
Следующий вопрос был: что же туда писать?
Если подумать логически, то задача не совсем сложная, необходимо всего лишь конвертировать директивы из htaccess в соответвующие правила для nginx. Спасибо Томасу Делингу, который уже провел иследования в этом вопросе и успешно конвертировал директивы файла htaccess для Elgg 1.8.2. Все что мне осталось, это скопировать набор правил и обновить файл настройки виртуального хостинга, в результате он выглядел приблизительно так:
И первый вопрос, который у меня возник: куда нужно писать эти правила?
Rewrite-rules для Nginx указываются внутри секции server в файле настройки виртуального хоста, например /etc/nginx/sites-available/default.
Следующий вопрос был: что же туда писать?
Если подумать логически, то задача не совсем сложная, необходимо всего лишь конвертировать директивы из htaccess в соответвующие правила для nginx. Спасибо Томасу Делингу, который уже провел иследования в этом вопросе и успешно конвертировал директивы файла htaccess для Elgg 1.8.2. Все что мне осталось, это скопировать набор правил и обновить файл настройки виртуального хостинга, в результате он выглядел приблизительно так:
server { listen 80; server_name elgg.domain.com; root /var/www-nginx/elgg/htdocs/; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; index index.php index.html; fastcgi_index index.php; client_max_body_size 8M; client_body_buffer_size 256K; rewrite ^/pg\/([A-Za-z0-9\_\-]+)$ /engine/handlers/page_handler.php?handler=$1&$args; rewrite ^/pg\/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/page_handler.php?handler=$1&page=$2&$args; rewrite ^/tag\/(.+)\/?$ /engine/handlers/page_handler.php?handler=search&page=$1; rewrite ^/action\/([A-Za-z0-9\_\-\/]+)$ /engine/handlers/action_handler.php?action=$1&$args; rewrite ^/cache\/(.*)$ /engine/handlers/cache_handler.php?request=$1&$args; rewrite ^/services\/api\/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/service_handler.php?handler=$1&request=$2&$args; rewrite ^/export\/([A-Za-z]+)\/([0-9]+)\/?$ /engine/handlers/export_handler.php?view=$1&guid=$2; rewrite ^/export\/([A-Za-z]+)\/([0-9]+)\/([A-Za-z]+)\/([A-Za-z0-9\_]+)\/$ /engine/handlers/export_handler.php?view=$1&guid=$2&type=$3&idname=$4; rewrite /xml-rpc.php /engine/handlers/xml-rpc_handler.php; rewrite /mt/mt-xmlrpc.cgi /engine/handlers/xml-rpc_handler.php; rewrite ^/rewrite.php$ /install.php; if (!-d $request_filename){ set $rule_11 1$rule_11; } if (!-f $request_filename){ set $rule_11 2$rule_11; } if ($rule_11 = "21"){ rewrite ^/([A-Za-z0-9\_\-]+)$ /engine/handlers/page_handler.php?handler=$1; } if (!-d $request_filename){ set $rule_12 1$rule_12; } if (!-f $request_filename){ set $rule_12 2$rule_12; } if ($rule_12 = "21"){ rewrite ^/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/page_handler.php?handler=$1&page=$2; } location ~ \.php$ { include fastcgi_params; # Assuming php-fastcgi running on localhost port 9000 fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } # Do not put CSS there or it will break simplecache location ~* \.(bmp|js|gif|ico|jpg|jpeg|png)$ { expires max; # log_not_found off; } }
Комментариев нет:
Отправить комментарий