xenForo на nginx

kisel

Проверенные
Сообщения
214
Реакции
46
Баллы
11,025
Добрый день!
Ситуация такая: развернули форум на чистом nginx, без апача.
Все бы ничего, все работает, за исключением одних только аватарок - при добавлении их выдает окошко с ошибкой 404. В идеале, в нем должно предлагаться выбрать самостоятельно картинку с компьютера.
Конфиг - стандартно try_files, который описан в доке по xenforo.
Так как над этой проблемой бьюсь не первый день, при дельном и рабочем совете - скидываю 5 вмз на пифко;)
 
С таким конфигом должно работать. Конфиг сервера перезагрузили (nginx -s reload) ?


Не обижайте мне nginx, реврайты в нем настраиваются так же как и в апаче, с помощью pcre.
Не, нихера. Проверено уже не раз).
 
С таким конфигом должно работать. Конфиг сервера перезагрузили (nginx -s reload) ?


Не обижайте мне nginx, реврайты в нем настраиваются так же как и в апаче, с помощью pcre.
перегружал не помогает даже не пойму чего
Вся проблема в DLE он чето не дает правильно работать
Код:
ls /home/www/dle
admin.php  backup  cron.php  engine  forum  index.php  install.php  language  robots.txt  templates  upgrade  uploads
и как это все подружить незнаю
 
Последнее редактирование:
уже было подумала, что ссылку забыла вставить) ну ок. В любом случае - выдает ошибку. Без ЧПУ - все работает.
Есть альтернатива вывода последних сообщений на главную, без ЧПУ и плагина "блок последних сообщений"?
в смысли вся проблема в мод_реврайт.
 
Не, нихера. Вы просто не умеете его готовить :-)
Возможно я криворукий, но пытались как я, так и мои друзья. Спустя НЕДЕЛЮ мы все таки завели реврайт на нгнихе.
 
мы все таки завели реврайт
вывод? :)
никто не говорит о криворукости и т.п.
если нет необходимых знаний и опыта - это не значит, что что-то не работает и работать не может, ведь так? :)
В общем, это уже пошел оффтоп, фактически. Просто я не мог не согласиться с мнением "Не обижайте мне nginx, реврайты в нем настраиваются так же как и в апаче, с помощью pcre." :)
 
Помогите подружить DLE и xenForo
Код:
 server {
        listen   80;
        server_name site.name.com;       
        root /home/www/dle;
     
        access_log  /home/www/logs/site.access.log; #расположение логов данного хоста
        error_log  /home/www/logs/site.error.log;
           location / {
}
      ## Что-бы закрыть папки, которые были закрыты через .htaccess, используем подобные конструкции
    location ~* (uploads|uploads/fotos|templates|language)/.+\.php {
        deny all;
    }

    location ~* /templates/.+\.tpl {
        deny all;
    }

    location ~* (engine/cache) {
        deny all;
    }

    location ~ /\.ht {
        deny  all;
    }

    location ~* \.(jpg|jpeg|gif|png|ico|swf|css|js)$ {
        expires             30d;
        add_header          Cache-Control public;
    }
   
    location /forum/ {
try_files $uri $uri/ /forum/index.php?$uri&$args;
}

location ~ /forum/(internal_data|library) {
internal;
}
   
# Редиректы
rewrite "^/page/([0-9]+)(/?)$" /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;

if (!-d $request_filename) {
        rewrite "^/([^.]+)/page/([0-9]+)(/?)+$" /index.php?do=cat&category=$1&cstart=$2 last;
        rewrite "^/([^.]+)/?$" /index.php?do=cat&category=$1 last;
}

if (!-f $request_filename) {
        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;
}

if (!-f $request_filename) {
        rewrite "^/([^/]+).html$" /index.php?do=static&page=$1 last;
}


   
##  Тут установлен дополнительный пароль на админку
    #location =/admin.php {
       # auth_basic            "closed section";
       # auth_basic_user_file  htpasswd;
       # fastcgi_pass   unix:/tmp/fastcgi.sock;
       # fastcgi_index  index.php;
       # fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
       # include        fastcgi_params;
    #}

    index index.html index.php;
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_cache  one;
        fastcgi_cache_min_uses 3;
        fastcgi_cache_valid 200 301 302 304 5m;
        fastcgi_cache_key "$request_method|$host|$request_uri";
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_ignore_client_abort off;
    }

   
}
 
Я бы посоветовал сначала понять как работают веб-серверы и научиться работать с ними. А потом уже начинать ставить форумы.


 
Последнее редактирование:
Я бы посоветовал сначала понять как работают веб-серверы и научиться работать с ними. А потом уже начинать ставить форумы.



Предложение одновременно хорошее и ужасное.

Если перефразировать Вас, то получиться: Изучите полностью дом(от фундамента до чердака), перед тем как забить гвоздь.
 
Нет на самом деле не удачное сравнение Вы привели. Я не хотел никого обидеть и более того я помог, привел ссылки которые ответят на все вопросы. Сугубо мое личное мнение - ставя готовый движок / cms / форумный / можно не понимать языка php / html , но используя VPS / VDS / Свой хостинг / никак нельзя не понимать основ веб сервера. Всему остальному можно научиться методом тыка.
Да и рассматривать этот вопрос на форуме поддержки XenForo тоже глупо. nginx никакого отношения к xenforo не имеет. Для этого есть специальные форумы на которых на ваши вопросы ответят быстрее, более развернуто и понятно.
 
Нет на самом деле не удачное сравнение Вы привели. Я не хотел никого обидеть и более того я помог, привел ссылки которые ответят на все вопросы. Сугубо мое личное мнение - ставя готовый движок / cms / форумный / можно не понимать языка php / html , но используя VPS / VDS / Свой хостинг / никак нельзя не понимать основ веб сервера. Всему остальному можно научиться методом тыка.
Да и рассматривать этот вопрос на форуме поддержки XenForo тоже глупо. nginx никакого отношения к xenforo не имеет. Для этого есть специальные форумы на которых на ваши вопросы ответят быстрее, более развернуто и понятно.
Так само ответят на nginx что он тут не причем ведь по отдельности все прекрасно работает а вот в месте нет.
 
Пример конфига для исследований :))) может кто чего для себя и найдет там .. :)
Код:
upstream xenforo {
        #server unix:/var/run/php5-fpm.sock;
        server 127.0.0.1:9000;
        }


server {
    listen   80;
    server_name forum.DOMEN.info;
        return 301 https://$server_name$request_uri;
  }

#######################################################################################
server {


        listen 443 ssl spdy;
        server_name forum.DOMEN.info;
        if ($request_method !~ ^(GET|HEAD|POST)$ ) {
        return 444;
        }
        if ($host != "forum.DOMEN.info") {
        return 444;
        }
        root   /opt/xenforo;
        index  index.php index.html index.html;
                ssl on;
                ssl_certificate_key /etc/nginx/ssl/forum/forum.DOMEN.info.key;
                ssl_certificate /etc/nginx/ssl/forum/forum.DOMEN.info.crt;
                ssl_prefer_server_ciphers on;
                ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";

                ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
                ssl_session_cache shared:SSL:10m;

                ssl_stapling on;
                ssl_stapling_verify on;
                resolver 8.8.4.4 8.8.8.8 valid=300s;
                resolver_timeout 10s;
                ssl_trusted_certificate /etc/ssl/ca-bundle.pem;

        add_header Strict-Transport-Security max-age=31536000;
        add_header X-XSS-Protection "1; mode=block;";
        access_log /var/log/nginx/ssl_forum.DOMEN.info_access.log;
        error_log /var/log/nginx/ssl_forum.DOMEN.info_error.log;

        # Some incorrect calls from browsers
        rewrite ^/(.*)/data/avatars/(.*)$ /data/avatars/$2 last;
        rewrite ^/(.*)/styles/(.*)/xenforo/(.*)$ /styles/$2/xenforo/$3 last;
        rewrite ^/http(s):/(.*)/login/login$ /login/login last;
#####################################################################################

        location / {
                rewrite ^/(.*)/index.php$ /$1/ last;
                try_files $uri $uri/ /index.php?$uri&$args;
                index  index.php;
                }
        location ~ ^/(install|internal_data|library)/ {
        internal;
        }
        location ~ /\.ht {
        deny all;
        }
        location ~* ^/data/taigachat/ {
        access_log      off;
        open_file_cache off;
        }

        # Security
        location = /admin.php {
        try_files       $uri =404;
        fastcgi_pass   xenforo;
        include        fastcgi_params;
        allow           127.0.0.0/8 ;
        allow           91.210.41.136 ; #rbs dynamic IP
        deny            all ;
        }
       
# Static content
        location ~* \.(?:jpg|jpeg|gif|png|bmp|ico|css|gz|tgz|rar|zip|svg|svgz|mp3|mp4|ogg|ogv|webm|htc|ttf|ttc|otf|eot|woff|doc|docx|pdf|txt|rtf|js)$ {
                expires         30d;
                access_log      off;
                add_header      Cache-Control  "public";
        }
# PHP ##############################################################################
        location ~ \.php$ {
        try_files          $uri /index.php =404;
                fastcgi_connect_timeout 60;
                fastcgi_send_timeout 180;
                fastcgi_read_timeout 180;
                fastcgi_buffer_size 128k;
                fastcgi_buffers 256 16k;
                fastcgi_busy_buffers_size 256k;
                fastcgi_temp_file_write_size 256k;
                fastcgi_max_temp_file_size 0;
                fastcgi_intercept_errors on;
        fastcgi_pass   xenforo;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
        }

####################################################################################
}
 
Reborns, а мне вот интересно что это за костыли торчат:
Код:
        # Some incorrect calls from browsers
        rewrite ^/(.*)/data/avatars/(.*)$ /data/avatars/$2 last;
        rewrite ^/(.*)/styles/(.*)/xenforo/(.*)$ /styles/$2/xenforo/$3 last;
        rewrite ^/http(s):/(.*)/login/login$ /login/login last;
 
Я тож пример оставлю, для разнообразия ^_^
Могу еще положить конфиг проксирования через nginx.
Так можно например повесить на один ip сайты которые работают на разных машинах.
Код:
server {
    listen 80;
    server_name  forum.ordinary-minecraft.ru;
    #access_log /var/log/nginx/xenforo.access_log main;
    #error_log /var/log/nginx/xenforo.error_log info;
    root /srv/xenforo/;

location ~ /\.ht {
            deny  all;
        }

location / {
    try_files $uri $uri/ /index.php?$uri&$args;
    index index.php index.html;
}

location /internal_data/ {
    internal;
}
location /library/ {
       internal;
}

    location ~ \.php$ {
    try_files $uri =404;
        fastcgi_pass    unix:/var/run/php-fpm.sock;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        include         fastcgi_params;
    }

}
 
Последнее редактирование:
  • Мне нравится
Реакции: Hope
Вот конфиг -
С ним все работает нормально. Не забываем включить ЧПУ в админке xf.
Проблем с аватарами как у ТС не встретил.
 
Последнее редактирование модератором:
Тоже отказался от Апача, но вот проблему со сменой автарок так и не решил пока...

ссылка domain.com/account/avatar выдает 404 - и поидее если из профиля должен открываться в окошке
другие ссылки типа account/blablabla открываются нормально

удивительно что если открыть ссылку domain.com/account/avatar/ (добавить в конце слэш) то страничка смены аватара откроется - но не в окошке
так же работает ссылка типа domain.com/index.php?account/avatar/ - тоже открывает страничку...

реврайты всякие пробовал - все равно 404 кто справился отпишитесь плиз
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу