Замена RewriteRule в nginx

Итак, имеем веб сервер Nginx в качестве фронтэнда, на бакэндах Apache и какой-нибудь fastcgi (spawn-fcgi или php-fpm). Функциональные возможности серверов, nginx и apache, несколько различаются, и одно из различий как раз в том, что nginx не поддерживает обработку файлов htaccess, которые в apache используются практически повсеместно. Большинство сайтовых движков (CMS), поддерживают возможность генерировать так называемые ЧПУ(человекопонятный урл, в оригинале, SEF - search engines friendly url), но для этого, веб сервер, должен обрабатывать строку запроса определенным образом, что apache и делает с помощью mod_rewrite и правил в файле .htaccess. Задача: заменить правила .htaccess, соответствующими директивами в конфигурационном файле nginx.conf.

Приведу несколько вариантов, для распространенных движков.
Все приведенные ниже варианты, рабочие, настроены и проверены на сервере под управлением операционной системы FrereBSD 7.1, версия Nginx 7.59.

Данные настройки касаются стандартных SEF модулей, встроенных в движки.
во всех примерах подразумевается, что версия nginx поддерживает именованные location и директиву try_files

Конфигурация Nginx и Apache для Joomla 1.0.15

Правила htaccess:

  1. RewriteBase /
  2. RewriteCond %{REQUEST_FILENAME} !-f
  3. RewriteCond %{REQUEST_FILENAME} !-d
  4. ## RewriteCond %{REQUEST_URI} ^(/component/option,com) [NC,OR] 	 ## опционально ##
  5. RewriteCond %{REQUEST_URI} (/|\.htm|\.php|\.html|/[^.]*)$  [NC]
  6. RewriteRule ^(content/|component/) index.php

Эквивалент для настройки сервера nginx

  1.  location / {
  2.     index index.php index.html index.htm;
  3.  }
  4.  
  5. ## в поставляемом с дистрибутивом, файле htaccess, есть опциональная строка, по-умолчанию закомментирована 
  6. ## данный блок ее эквивалент для nginx 
  7. #
  8. # location ^~ /component/option,com {
  9. #    index index.php index.html index.htm;
  10. #    try_files $uri $uri/ @joomla;
  11. # }
  12. #####
  13.  
  14. location ~* (\.html?|/|/[^.]*)$ {
  15.    try_files $uri $uri/ @joomla;
  16.    index index.php index.html index.htm;
  17. }
  18.  
  19. location ~ \.php$ {
  20.    try_files $uri @joomla;
  21.    fastcgi_pass   unix:/tmp/php-fpm.sock;  ## Ваш fastcgi сервер 
  22.    fastcgi_index  index.php;
  23.    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  24.    include        fastcgi_params;          ## стандартный файл, идущий с nginx 
  25. }
  26.  
  27. location @joomla {
  28.    fastcgi_pass   unix:/tmp/php-fpm.sock; 
  29.    fastcgi_param  SCRIPT_FILENAME  $document_root/index.php;
  30.    include        fastcgi_params; 
  31. }

Конфигурация Nginx и Apache для Joomla 1.5.10

Правила htaccess:

  1. RewriteBase /
  2. RewriteCond %{REQUEST_FILENAME} !-f
  3. RewriteCond %{REQUEST_FILENAME} !-d
  4. RewriteCond %{REQUEST_URI} !^/index.php
  5. RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$  [NC]
  6. RewriteRule (.*) index.php
  7. RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

Эквивалент для настройки сервера nginx

  1. location / {
  2.    index index.php index.html index.htm;
  3. }
  4.  
  5. location ~* (/|\.html?|\.feed|\.pdf|\.raw|/[^.]*)$ {
  6.    try_files $uri $uri/ @joomla;
  7. }
  8.  
  9. location ~ \.php$ {
  10.    try_files $uri @joomla;
  11.    fastcgi_pass   unix:/tmp/php-fpm.sock;
  12.    fastcgi_index  index.php;
  13.    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  14.    include        fastcgi_params;
  15. }
  16.  
  17. location @joomla {
  18.    fastcgi_pass   unix:/tmp/php-fpm.sock;
  19.    fastcgi_param  SCRIPT_FILENAME      $document_root/index.php;
  20.    fastcgi_param  QUERY_STRING         $query_string;
  21.    fastcgi_param  REQUEST_METHOD       $request_method;
  22.    fastcgi_param  CONTENT_TYPE         $content_type;
  23.    fastcgi_param  CONTENT_LENGTH       $content_length;
  24.    fastcgi_param  REDIRECT_STATUS      200;
  25.    fastcgi_param  SCRIPT_NAME          /index.php; 
  26.    fastcgi_param  REQUEST_URI          $request_uri;
  27.    fastcgi_param  DOCUMENT_URI         $document_uri;
  28.    fastcgi_param  DOCUMENT_ROOT        $document_root;
  29.    fastcgi_param  SERVER_PROTOCOL      $server_protocol;
  30.    fastcgi_param  GATEWAY_INTERFACE    CGI/1.1;
  31.    fastcgi_param  SERVER_SOFTWARE      nginx/$nginx_version;
  32.    fastcgi_param  REMOTE_ADDR          $remote_addr;
  33.    fastcgi_param  REMOTE_PORT          $remote_port;
  34.    fastcgi_param  SERVER_ADDR          $server_addr;
  35.    fastcgi_param  SERVER_PORT          $server_port;
  36.    fastcgi_param  SERVER_NAME          $server_name;
  37. }

Примечание: в первом примере, fastcgi_param были загружены из стандартного файла, идущего в поставке nginx, во втором, я не стал инклудить файл с параметрами а просто прописал их в конфиг, обратите внимание что параметр SCRIPT_NAME, отличается от первого примера.

Конфигурация Nginx и Apache для Wordpress 2.7.1

Правила htaccess:

  1. RewriteBase /
  2. RewriteCond %{REQUEST_FILENAME} !-f
  3. RewriteCond %{REQUEST_FILENAME} !-d
  4. RewriteRule . /index.php [L]

Эквивалент для веб сервера nginx

  1. location / {
  2.    try_files $uri $uri/ @wordpress;
  3.    index index.php index.html index.htm;
  4. }
  5.  
  6. location ~ \.php$ {
  7.    try_files $uri @wordpress;
  8.    fastcgi_pass   unix:/tmp/php-fpm.sock;
  9.    fastcgi_index  index.php;
  10.    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  11.    include        fastcgi_params;
  12. }
  13.  
  14. location @wordpress {
  15.    fastcgi_pass   unix:/tmp/php-fpm.sock;
  16.    fastcgi_param  SCRIPT_FILENAME  $document_root/index.php;
  17.    include        fastcgi_params;
  18. }

Как видите, тут мы тоже просто инклудим стандартный файл с fastcgi параметрами

Конфигурация Nginx и Apache для Drupal 6.12

Правила htaccess:

  1.   RewriteCond %{REQUEST_FILENAME} !-f
  2.   RewriteCond %{REQUEST_FILENAME} !-d
  3.   RewriteCond %{REQUEST_URI} !=/favicon.ico
  4.   RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Эквивалент для сервера nginx

  1. location / {
  2.    try_files $uri $uri/ @drupal;
  3.    index index.php index.html index.htm;
  4. }
  5.  
  6. location ~ \.php$ {
  7.    try_files $uri @drupal;
  8.    fastcgi_pass   unix:/tmp/php-fpm.sock;
  9.    fastcgi_index  index.php;
  10.    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  11.    include        fastcgi_params;
  12. }
  13.  
  14. location @drupal {
  15.    fastcgi_pass   unix:/tmp/php-fpm.sock;
  16.    fastcgi_index  index.php;
  17.    fastcgi_param  SCRIPT_FILENAME      $document_root/index.php;
  18. ---------------------------------------------------------------------------------------------------------------------
  19.    fastcgi_param  QUERY_STRING         q=$uri&$args;
  20.    fastcgi_param  REQUEST_METHOD       $request_method;
  21.    fastcgi_param  CONTENT_TYPE         $content_type;
  22.    fastcgi_param  CONTENT_LENGTH       $content_length;
  23.    fastcgi_param  REDIRECT_STATUS      200;
  24.    fastcgi_param  SCRIPT_NAME          /index.php;
  25.    fastcgi_param  REQUEST_URI          $request_uri;
  26.    fastcgi_param  DOCUMENT_URI         $document_uri;
  27.    fastcgi_param  DOCUMENT_ROOT        $document_root;
  28.    fastcgi_param  SERVER_PROTOCOL      $server_protocol;
  29.    fastcgi_param  GATEWAY_INTERFACE    CGI/1.1;
  30.    fastcgi_param  SERVER_SOFTWARE      nginx/$nginx_version;
  31.    fastcgi_param  REMOTE_ADDR          $remote_addr;
  32.    fastcgi_param  REMOTE_PORT          $remote_port;
  33.    fastcgi_param  SERVER_ADDR          $server_addr;
  34.    fastcgi_param  SERVER_PORT          $server_port;
  35.    fastcgi_param  SERVER_NAME          $server_name;
  36. ---------------------------------------------------------------------------------------------------------------------
  37. Весь список fastcgi параметров приведен для наглядности, данный блок можно сократить до:
  38.  
  39.    include        fastcgi_params;
  40.    fastcgi_param  QUERY_STRING         q=$uri&$args;
  41.    fastcgi_param  SCRIPT_NAME          /index.php;
  42. }

Более короткий и красивый вариант.

  1. location / {
  2.    try_files $uri $uri/ /index.php?q=$uri&$args;
  3.    index index.php index.html index.htm;
  4. }
  5.  
  6. location ~ \.php$ {
  7.    fastcgi_pass   unix:/tmp/php-fpm.sock;
  8.    fastcgi_index  index.php;
  9.    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  10.    include        fastcgi_params;
  11. }

Вот собственно и все, единственное что стоит добавить, все рассмотренные правила касаются именно SEF, я здесь не затрагивал правила безопасности, так-же добавляемые в htaccess почти всеми движками, возможно распишу попозже)
Всем удачи.

Комментарии

Благодарю ответившего - таки все заработало, за исключением того, что главная открывается только с указанием индексного файла. А по неверным символам в URL пришлось дописать строчку в конфиг CI. Есть решение одно здесь http://codeigniter.com/forums/viewthread/62347/ , но как выставить в конфиге base64, я так и не понял...

честно говоря не понял при чем тут base64, с CI вообще не сталкивался
попробуйте дописать в первый location

index index.php;

base4 здесь при том, что, при внутренних правилах роутинга переход на любую страницу (с уже оптимизированными под структуру проекта uri адресам) выдавалось сообщение "ваш uri содержит недопутимые символы". Но это уже проблема настройки самого CI. Если удастся побороть, то отпишу сюда рабочий конфиг того и другого. Кстати, а каким то образом можно отловить внутренний uri, который выдает CI после вебсервера дабы проверить, на какой символ он ругается ?

*base64 конечно же.

Благодарю, теперь все работает. Но подскажите, если главная открывается и с указанием индексного файла, то как мне запретить такой uri ?

разве это не подойдет ?
http://vds-admin.ru/nginx/nginx-i-301-redirekt-301-moved-permanently
в вашем случае, скорее всего, достаточно прописать

location = /index.php {
    if ($request_uri = /index.php) {
        rewrite ^ http://$host? permanent;
    }
}

В любом из случаев с этими строчками в конфиге веб сервер предлагает скачать некий текстовый файл default.txt, отказываясь грузить главную напрочь.

а если целиком ?

location = /index.php {
    if ($request_uri = /index.php) {
        rewrite ^ http://$host? permanent;
    }
    fastcgi_pass   unix:/tmp/fastcgi.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

Отлично! Спасибо огромное! С меня причитается, в любом случае.

В итоге конфиг получился такой:

server {
listen 80;
server_name http://www.example.com;
rewrite ^ http://example.com$request_uri? permanent; #301 redirect
}
server {
listen 80;
server_name .example.com;
access_log /var/log/nginx/localhost.access.log;
root /var/www/nginx-default;
# removes access to "system" folder, also allows a "System.php" controller
if ($request_uri ~* ^/system) {
rewrite ^/(.*)$ /index.php?/$1 last;
break;
}
location = /index.php {
if ($request_uri = /index.php) {
rewrite ^ http://$host? permanent;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location / {
try_files $uri $uri/ /index.php?$request_uri;
index index.php;
}

error_page 404 /index.html;

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.(jpg|jpeg|gif|png|ico|css|js)$ {
access_log off;
gzip_static on;
expires max;
}
}

Может быть есть какие идеи по оптимизации с целью уменьшения количества строк ?

а без этого не работает ?

if ($request_uri ~* ^/system) {
rewrite ^/(.*)$ /index.php?/$1 last;
break;
}

Без этого работает - это я поставил для закрытия доступа к папке с CI самим. Думаю, надо оставить. а в остальном нормально ?

вроде нормально, но я движка не знаю

для закрытия доступа к папке с CI самим

в смысле к файлам в этой папке ?
лучше тогда сделать что-то типа:

location /system {
  return 404;
}

или так

location /system {
    rewrite ^ / permanent;
}

Покумекал и вот чего получилось в итоге (все работает как надо):

server {
listen 80;
server_name http://www.example.com;
rewrite ^ http://example.com$request_uri? permanent;
}
server {
listen 80;
server_name .example.com;
access_log /var/log/nginx/localhost.access.log;
root /var/www/nginx-default;

if ($request_uri ~* ^/system) {
rewrite ^/(.*)$ /index.php?/$1 last;
break;
}
location / {
if ($request_uri = /index.php) {
rewrite ^ http://$host? permanent;
}
try_files $uri $uri/ /index.php?$request_uri;
index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_scr 24 ipt_name;
include fastcgi_params;
}
location ~* \.(jpg|jpeg|gif|png|ico|css|js|exe|gz|avi|html)$ {
access_log off;
gzip_static on;
expires max;
}
error_page 404 /index.html;
}

Думаю, можно и количество серверов до одного уменьшить.
Я тоже движка не знаю, но оказалось, что все не так сложно и это можно побороть.

В предыдущем сообщении опечатка закралась.
Вместо
_scr 24 ipt_name;
должно быть конечно же
_sript_name;

Поглядел доку по nginx 0.8 ветки, похоже можно выкрутится (пока проверить не могу, так как сайт пока временно без домена на vds):

server {
listen 80;
server_name ~^(www\.)?(?.+)$;
access_log off;
root /var/www/nginx-default;
if ($host = www.example.com) {
rewrite ^ http://$domain$request_uri? permanent;
}
if ($request_uri ~* ^/system) {
rewrite ^ / permanent;
break;
}
location / {
if ($request_uri = /index.php) {
rewrite ^ http://$host? permanent;
}
try_files $uri $uri/ /index.php?$request_uri;
index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_scr 27 ipt_name;
include fastcgi_params;
}
location ~* \.(jpg|jpeg|gif|png|ico|css|js|exe|gz|avi|html)$ {
access_log off;
gzip_static on;
expires max;
}
error_page 404 /index.html;
}

Еще бы проверить, но нет пока возможности.

server {
listen 80;
server_name ~^(www\.)?(?.+)$;
access_log off;
root /var/www/nginx-default;
if ($host = www.example.com) {
rewrite ^ http://$domain$request_uri? permanent;
}
if ($request_uri ~* ^/system) {
rewrite ^ / permanent;
break;
}
location / {
if ($request_uri = /index.php) {
rewrite ^ http://$host? permanent;
}
try_files $uri $uri/ /index.php?$request_uri;
index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_scr 27 ipt_name;
include fastcgi_params;
}
location ~* \.(jpg|jpeg|gif|png|ico|css|js|exe|gz|avi|html)$ {
access_log off;
gzip_static on;
expires max;
}
error_page 404 /index.html;
}

Если в этом блоке в троке server_name не будет знаков больше и меньше, то этот листинг получается не полноценный. Вобщем, тут речь идет о переменной domain.

Итог трудового дня (минимально необходимый конфиг):

server {
listen 80;
server_name ~^(www\.)?(?.+)$;
access_log off;
root /var/www/nginx-default;
if ($host = www.softvault.ru) {
rewrite ^ http://$domain$request_uri? permanent;
}
location / {
if ($request_uri = /index.php) {
rewrite ^ http://$host? permanent;
}
try_files $uri $uri/ /index.php?$request_uri;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.(jpg|jpeg|gif|png|ico|css|js|exe|gz|avi|html)$ {
gzip_static on;
expires max;
}
}

а откуда должна взяться переменная $domain ?
и от этого лучше избавиться:

if ($host = www.softvault.ru) {
rewrite ^ http://$domain$request_uri? permanent;
}

сделав через

server {
.............
}

разработчик не рекомендует использовать if без крайней нужды, в данном случае никакой крайней нужды я не вижу)

Глядим сюда и видим в описании директивы server_name переменную domain.
То есть, придется возвращаться к варианту с двумя server {} ?

*сюда http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#server

server {
        listen   80;
        server_name .example.com;
        access_log off;
        root /var/www/nginx-default;
        location ~* /system {
                return 404;
}
        location /index.php {
                rewrite ^ http://$host? permanent;
}
error_page      404     /404.html;
        location / {
                try_files $uri $uri/ /index.php?$request_uri;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
}
        location ~* \.(jpg|jpeg|gif|png|ico|css|js|exe|gz|avi|html)$ {
                gzip_static on;
                expires max;
}
}

Вот на этом пока остановлюсь. Вместо стандартной 404 страницы выдается в точности 404 страница, генерируемая самим CI. Это оказалось сделать проще, чем придумывать правила и усложнять сам конфиг nginx.

Ошибочка, вместо:
rewrite ^ http://$host? permanent;
долно быть:
rewrite ^ / permanent;

Глядим сюда и видим в описании директивы server_name переменную domain.

может все таки внимательно прочитаете документацию ?
эта переменная появляется при создании именованного выделения, а у вас в конфиге, кторый был приведен выше, обычное

server {
listen 80;
server_name ~^(www\.)?(?.+)$;
access_log off;
root /var/www/nginx-default;
if ($host = www.softvault.ru) {
rewrite ^ http://$domain$request_uri? permanent;
}

Если вы внимательно посмотрите на конфиг, под которым я это писал, то там все в точности так, как написано у вас.
Впрочем, это уже не имеет значения, так как можно обойтись и без этого. Тем более, что работает это только в ветке 0.8, тогда как может так случиться, что придется поднимать на 0.7

я и привел кусок вашего конфига, в котором используется не существующая переменная $domain, вот он:

server {
listen 80;
server_name ~^(www\.)?(?.+)$;
access_log off;
root /var/www/nginx-default;
if ($host = www.softvault.ru) {
rewrite ^ http://$domain$request_uri? permanent;
}

Уважаемый, я ценю вашу помощь, но здесь нельзя размещать " domain " <- вот такое выражение из примера с сайта nginx. Переменная, со знаками "меньше" перед domain и "больше" после domain (вместо пробелов), просто накуй вырезается. Как я уже говорил, все это работает только в 0.8 ветке. Посему решено отказаться от такого варианта в пользу более универсального.

А располагается это выражение после комбинации вот этих символов "?(?" в строке server_name, что и является инициализацией существующей переменной $domain. Посмотрите здесьhttp://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#server_name и все станет понятно. Еще раз повторюсь. Здесь этот набор символов просторежется напрочь, поэтому его и нет в моем примере.

да все понял уже, нужно было просто так и написать, что парсер отрезал символы
как-то не обращал на это внимания

Теперь вопрос. Правда он уже касается самого CI. Может ли обработка допустимых символов в uri зависеть от версии php. На старом хостинге php более древний, чем на vds. Но на старом php то список обрабатывается корректно, в отличие от нового на vds. Может с функциями опять намудрили чего. Собственно, это единственное препятствие для полноценного переноса сайта.

Похоже, действительно, была виновата версия php. Установил олдстэйбл 5.2.14 и все заработало со старыми настройками.
Спасибо Анонимному пользователю за участие. Надеюсь, описанное здесь будет полезным кому-либо и ему не придется тратить время на такие оказии.

Подскажите пожайлуста, как правильно сделать рерайт для
RewriteEngine on
RewriteRule ^([a-zA-Z]{0,25}+).html([a-zA-Z0-9\&\=]{0,100}+)? index.php?page=$1$2 [L]
RewriteRule ^page-([0-9]{0,10}+).html? index.php?page=page&id=$1 [L]
RewriteRule ^news-([0-9]{0,10}+).html? index.php?page=news&id=$1 [L]
такого htaccess
Заранее благодарен

Вот тут есть что то похожее, но кумекайте сами ибо я не настолько силен в регулярных выражениях.

http://forum.nginx.org/read.php?21,110209,110410

Подскажите, как настроить RewriteRule для efront
Особенность заключается в том, что efront ставится не в корень, а в папку www (и только в неё).
Соответственно на nginx у меня папка /var/www/client/web/
т.е. не www и в папку /client/ я писать не могу, т.к. нет прав.
Получается, что efront надо установить в папку /var/www/client/web/www/
Вопрос - как настроить RewriteRule чтобы в адресной строке не было /www/, но файлы брались оттуда?
Я добавил
location / {
alias /var/www/client/web/www/;
}
но, теперь надо вводить адрес полностью, вместе с php
и странная штука (для меня не понятная)
если я ввожу просто адрес, без .php то все работает как надо, но берется файл index.html
с файлами .php все работает как будто нет связки alias
добавлял index index.php index.html - не помогает

все решилось
в секции server {
поправил root добавив в конце /www
и добавил своё правило
location / {
root /var/www/client/web/www/;
}
только уже с root, а не alias
в итоге получилось так
server {
listen *:80;
...
root /var/www/client/web/www/;
...
location / {
root /var/www/client/web/www/;
}
}

небольшая поправка - можно просто поменять root и не добавлять
location / {
root /var/www/client/web/www/;
}

т.е. сделать так:
server{
...
listen *:80;
...
root /var/www/client/web/www/;
...
}
И не забыть перечитать настройки
#sudo /etc/init.d/nginx reload

Не как не могу настроить работу joomla 3.4.1 работающие под управлением FactCGI+(Nginx+PHP-FPM)
Вот мой конфиг nginx /etc/nginx/nginx.conf

user www-data;
worker_processes 8;
pid /run/nginx.pid;

events {
        worker_connections 4096;
        multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        server_tokens off;

        server_names_hash_bucket_size 128;
        server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip on;
        gzip_disable "msie6";

        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_buffers 16 16k;
        gzip_http_version 1.1;
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

        ##
        # nginx-naxsi config
        ##
        # Uncomment it if you installed nginx-naxsi
        ##

        #include /etc/nginx/naxsi_core.rules;

        ##
        # nginx-passenger config
        ##
        # Uncomment it if you installed nginx-passenger
        ##

        #passenger_root /usr;
        #passenger_ruby /usr/bin/ruby;

        ##
        # Virtual Host Configs
        ##

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
        include /etc/nginx/vhosts/*/*;
server {
                server_name localhost;
        disable_symlinks if_not_owner;
        listen 80;
        include /etc/nginx/vhosts-includes/*.conf;
        location @fallback {
                error_log /dev/null crit;
                proxy_pass http://127.0.0.1:8080;
                proxy_redirect http://127.0.0.1:8080 /;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                access_log off ;
        }
        }
}


и конфиг сайта /etc/nginx/vhosts/ciberbox.ru.conf

#user 'ciberbox' virtual host 'ciberbox.ru' configuration file
server {
        server_name ciberbox.ru www.ciberbox.ru;
        charset UTF-8;
        disable_symlinks if_not_owner from=$root_path;
        index index.html index.php;
        root $root_path;
        set $root_path /var/www/ciberbox/data/www/ciberbox.ru;
        ssi on;
        access_log off ;
        error_log /var/www/httpd-logs/ciberbox.ru.error.log notice;
        listen 77.41.111.112:80;
        include /etc/nginx/vhosts-includes/*.conf;
        location / {
                location ~ [^/]\.ph(p\d*|tml)$ {
                        try_files /does_not_exists @php;
                }
        }
        location @php {
                fastcgi_index index.php;
                fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f info@ciberbox.ru";
                fastcgi_pass unix:/var/www/php-fpm/ciberbox.sock;
                fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
                try_files $uri =404;
                include fastcgi_params;
        }
        return 301 https://$host$request_uri;
}

Как мне настроить? помогите пожалуйста, уже все перепробовал

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
Регистр имеет значение
             oooooo     oooo                          ooooo   ooooo  ooo        ooooo 
`888. .8' `888' `888' `88. .888'
oo.ooooo. `888. .8' .ooooo oo .ooooo oo 888 888 888b d'888
888' `88b `888. .8' d88' `888 d88' `888 888ooooo888 8 Y88. .P 888
888 888 `888.8' 888 888 888 888 888 888 8 `888' 888
888 888 `888' 888 888 888 888 888 888 8 Y 888
888bod8P' `8' `V8bod888 `V8bod888 o888o o888o o8o o888o
888 888. 888.
o888o 8P' 8P'
" "
Введите код, изображенный в стиле ASCII-арт.