[SOLVED] SMF через NGINX proxy_pass

Автор merlin.metso, 29 февраля 2012, 16:36:35

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

merlin.metso

Доброго времени суток товарищи.

Начальство очень требовало поставить для целей организации форум. Путем долгих и мучительных размышлений был выбран SMF. Форум работает,  и люди в нем общаются, но только внутри локальной сети. Поэтому было решено "выпустить" форум в мир.

Реализация следующая.

nginx прослушивает внешний (мировой) интерфейс на 80-м порту и перенапрявляет запросы на соответствующие сайты. Сам SMF крутится на apache2.

Но из мира SMF не работает. Ибо пытается использовать ЛОКАНЬНЫЕ IP адреса при построении страницы. То есть я прописываю в браузере forum.myurl.ru а все ссылки на странице указывают на 192.168.1.84 :( из за этого и заглавная страница строится через жоп не корректно, да и сам форум не работает из мира.

Примеры конфигов ниже.

конфиг nginx

### Выпускаем в мир форум
        server {
        listen 80;
        server_name forum.myurl.ru www.forum.myurl.ru;

        location / {

                proxy_pass              http://192.168.1.84;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        Host $http_host;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_$
                }
        }


Конфиг Апача

<VirtualHost *:80>
    ServerName forum.myurl.ru
    ServerAlias forum.localurl.corp www.forum.localurl.corp
    DocumentRoot /var/www/html
    ErrorLog logs/forum-error.log
</VirtualHost>


Гуглин, но подобных проблем не нашел. Переносил SMF на машину на которой крутится сам nginx, там же поднят Апач на порту 8090 поднимал на нем SMF- ничеего не помогает  wallbash  Как вариант можно попробовать поднять SMF на самом nginx, но это на крайний случай. Всётаки желательно чтобы заработала схема описанная в самом начале.

Можете подсказать в какую сторону копать? Буду признателен.

digger®

Это не гуглить нужно а на офсайте порыться.
А можно прям там и вопрос задать сразу разрабам, почему другие движки работают по разным адресам, а в SMF гвоздями прибит один адрес.

merlin.metso

 :o

Так я не первый кто с таким сталкивается? У этой проблемы в принципе есть решение?

digger®

Цитата: merlin.metso от 29 февраля 2012, 17:14:52
:o

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

По дубовому, можно в Settings.php сделать
$boardurl = '';
Будет работать, но в уведомлениях будут приходить кривые ссылки и еще мелкие глюки будут присутствовать.

merlin.metso

$boardurl = '';

не помогло

Я так понял что подобная проблема существует только в SMF? В других движках подобной фигни особенности нет?

digger®

Цитата: merlin.metso от 29 февраля 2012, 18:41:36
$boardurl = '';

не помогло
Это уже из-за Nginx, наверное.

Вот рабочий рецепт вроде http://www.simplemachines.ru/index.php?topic=12422.msg95392#msg95392

Цитировать
Я так понял что подобная проблема существует только в SMF? В других движках подобной фигни особенности нет?
За других ручаться не могу.

merlin.metso

Спасибо :)

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

это в SMF дело или может в моих руках в nginx

digger®

Цитата: merlin.metso от 29 февраля 2012, 21:16:22
Спасибо :)

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

это в SMF дело или может в моих руках в nginx
Если из локалки без nginx нормально работает, то дело в нем.

merlin.metso

После того, как я пытаюсь выполнить какое либо действие (сохранить, ответить, удалить...) браузер выдает ошибку 404 ибо пытается пройть по не правильному пути. Примет ниже

forum.myurl.ru/ /index.php?board=5.0

как мы видим тут есть лишний пробел со слэшем, если их удалить то всё работает ОК. Такой глюк наблюдается и локально и ИЗВНЕ. Тоесть nginx не при делах. Вот тут может случится страшное если дело в исходном коде а не в настройках  :facepalm:

digger®

Цитата: merlin.metso от 29 февраля 2012, 21:49:26
После того, как я пытаюсь выполнить какое либо действие (сохранить, ответить, удалить...) браузер выдает ошибку 404 ибо пытается пройть по не правильному пути. Примет ниже

forum.myurl.ru/ /index.php?board=5.0

как мы видим тут есть лишний пробел со слэшем, если их удалить то всё работает ОК. Такой глюк наблюдается и локально и ИЗВНЕ. Тоесть nginx не при делах. Вот тут может случится страшное если дело в исходном коде а не в настройках  :facepalm:
В $boardurl сейчас какое значение?

merlin.metso

 :D :D :D
Запуск скрипта repair_settings.php решил этот глюк. А последующее удалениие URL'ов из тем оформления и из $boardurl дали положительный результат. Теперь всё работает. Только рассылку не проверял, но от неё попробую вообще отказаться.

Спасибо, digger, за помощь.