Автор Тема: nginx + apache тренируюсь в домашней песочнице  (Прочитано 2312 раз)

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

Оффлайн K.E.P.

  • Пользователь
  • **
  • Сообщений: 57
  • Рейтинг: 1
    • Просмотр профиля
  • Откуда: Default city
Есть две виртуальные машины. Одна с nginx, вторая с apache. На второй установлен форум на phpBB. Сам форум работает если подключаться напрямую. На машине с nginx есть простенькая статичная страничка на которой есть ссылка на форум. Страничка эта открывается. Что нужно сделать, какие конфиги прописать чтобы по ссылке открылся форум который расположен за nginx?
сетевые настройки:
машина с nginx:
внешний интерфейс:192.168.163.129
внутренний интерфейс:192.168.0.1
машина с apache:192.168.0.2/ шлюз 192.168.0.1
на статичной страничке ссылка на форум записана как 192.168.163.129/forum

Оффлайн shurutov

  • Постоялец
  • ***
  • Сообщений: 326
  • Рейтинг: 3
  • Пол: Мужской
    • mshurutov@jabber.ru
    • Просмотр профиля
  • Откуда: СССР
http://nginx.org/ru/docs/http/ngx_http_proxy_module.html
Соответствующий кусок конфига (перенаправление всех запросов с нгинкса на индейца):
location / {
    proxy_pass       http://192.168.0.2;
    proxy_set_header Host      $host;
    proxy_set_header X-Real-IP $remote_addr;
}
Я сейчас не помню, но там есть некоторые ньюансы в обработке финального слеша в proxy_pass.
С уважением,
Шурутов Михаил.

Оффлайн K.E.P.

  • Пользователь
  • **
  • Сообщений: 57
  • Рейтинг: 1
    • Просмотр профиля
  • Откуда: Default city
http://nginx.org/ru/docs/http/ngx_http_proxy_module.html
Соответствующий кусок конфига (перенаправление всех запросов с нгинкса на индейца):
location / {
    proxy_pass       http://192.168.0.2;
    proxy_set_header Host      $host;
    proxy_set_header X-Real-IP $remote_addr;
}
Я сейчас не помню, но там есть некоторые ньюансы в обработке финального слеша в proxy_pass.

это надо прописывать в sites-available или conf.d?

Оффлайн shurutov

  • Постоялец
  • ***
  • Сообщений: 326
  • Рейтинг: 3
  • Пол: Мужской
    • mshurutov@jabber.ru
    • Просмотр профиля
  • Откуда: СССР
это надо прописывать в sites-available или conf.d?
Это надо добавлять в файл, отвечающий за конкретный сайт, который нужно проксировать.
Смотри, у тебя есть основной /etc/nginx/nginx.conf, в нем есть инклюд. Вот и смотри, что у тебя инклюдиться: sites-enabled (содержимое которого суть набор символьных ссылок на файлы из sites-available, ни видел, чтобы sites-available напрямую инклюдился), или conf.d. Вполне возможно, что в conf.d лежат конфиги каких-то модулей, а в sites-available - конкретных сайтов. И ещё, приведённый мной код все запросы, приходящие на соответствующий сайт пересылает на индейца.
С уважением,
Шурутов Михаил.

Оффлайн K.E.P.

  • Пользователь
  • **
  • Сообщений: 57
  • Рейтинг: 1
    • Просмотр профиля
  • Откуда: Default city
в conf.d ничего нет. в nginx.conf ссылки
 include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
в sites-enabled создаю файл forum и прописываю в него:
root@NGINX1:/etc/nginx/sites-enabled# cat forum
server {
listen http://192.168.163.129:80;

location /{
proxy_pass http://192.168.0.2;
proxy_set_header Host   $host;
proxy_set_header X-Real_IP      $remote_addr;
}
}
это правильно? и потом ещё нужно прописать в sites-available

Оффлайн shurutov

  • Постоялец
  • ***
  • Сообщений: 326
  • Рейтинг: 3
  • Пол: Мужской
    • mshurutov@jabber.ru
    • Просмотр профиля
  • Откуда: СССР
В location между / и { пробел таки нужен.
По идее должно работать. Команда проверки корректности конфигурации nginx -t.
В твоей конфигурации ничего в sites-available прописывать не надо.
Это такая идеология дебиан-подобных дистров: все конфиги в одном месте (sites-available), а потом на то, что нужно из этого каталога, создаются символьные ссылки в другом каталоге (sites-enabled).
Что-то типа:
root@NGINX1:/etc/nginx/ cd sites-available
root@NGINX1:/etc/nginx/sites-available/ vim forum
root@NGINX1:/etc/nginx/sites-available/ cd ../sites-enabled
root@NGINX1:/etc/nginx/sites-enabled/ ln -s ../sites-available/forum
С уважением,
Шурутов Михаил.

Оффлайн K.E.P.

  • Пользователь
  • **
  • Сообщений: 57
  • Рейтинг: 1
    • Просмотр профиля
  • Откуда: Default city
root@NGINX1:/etc/nginx/sites-enabled# nginx -t
nginx: [emerg] invalid host in "http://192.168.126.129:80" of the "listen" directive in /etc/nginx/sites-enabled/forum:2
nginx: configuration file /etc/nginx/nginx.conf test failed
сейчас на работе балуюсь. у вм с nginx соответственно ip отличный от домашнего.


Updated: 16 May 2017, 15:34:50

разобрался. заработало. но стартовая страничка пропала.  ???
« Последнее редактирование: 16 мая 2017, 15:34:50 от K.E.P. »

Оффлайн shurutov

  • Постоялец
  • ***
  • Сообщений: 326
  • Рейтинг: 3
  • Пол: Мужской
    • mshurutov@jabber.ru
    • Просмотр профиля
  • Откуда: СССР
но стартовая страничка пропала.
Сделай для неё отдельный location ПЕРЕД "/".


Updated: 16 May 2017, 15:49:57

но стартовая страничка пропала.
Всё правильно, она же у тебя на машинке с нгинксом была? Воот! А после конфигурирования, все запросы полетели на индейца. Т.е тебе либо переносить эту страничку в туда, либо, как я написал, сделать для неё отдельный location.
С уважением,
Шурутов Михаил.

Оффлайн K.E.P.

  • Пользователь
  • **
  • Сообщений: 57
  • Рейтинг: 1
    • Просмотр профиля
  • Откуда: Default city
всё таки не возьму в толк. как сделать чтоб форум открывался. сделал так:
root@NGINX1:/etc/nginx/sites-enabled# cat forum.conf
server {
listen 192.168.126.129:80;
location / {
root /var/www/html;
}

location /forum/ {
proxy_pass http://192.168.0.2;
proxy_set_header Host   $host;
proxy_set_header X-Real_IP      $remote_addr;
}
}
стартовая появилась, а форум по ссылке выдает ошибку :
Not Found

The requested URL /forum/ was not found on this server.

Apache/2.4.10 (Debian) Server at 192.168.126.129 Port 80


Updated: 16 May 2017, 16:45:00

уряяя! заработало! надо было слеш добавить в proxy_pass http://192.168.0.2/
Благодарю Михаила за помощь.
« Последнее редактирование: 16 мая 2017, 16:45:00 от K.E.P. »

Оффлайн shurutov

  • Постоялец
  • ***
  • Сообщений: 326
  • Рейтинг: 3
  • Пол: Мужской
    • mshurutov@jabber.ru
    • Просмотр профиля
  • Откуда: СССР
K.E.P., я ж написал, сделать статический локейшн для стартовой страницы, всё остальное пулять на индейца:
server {
listen 192.168.126.129:80;

location /start_page.html {
root /var/www/html/;
}

location / {
proxy_pass http://192.168.0.2;
proxy_set_header Host   $host;
proxy_set_header X-Real_IP      $remote_addr;
}

}

Ну и доки читай по нгинксу. А индейца в подавляющем большинстве случаев вполне себе нафиг не нужен. Для обработки php есть php-fpm, smf вполне себе поднимается на связке nginx+fpm-php... Для питона есть свои тараканы, для руби есть рельсы, ну и всё такое прочее.


Updated: 16 May 2017, 16:50:17

надо было слеш добавить в proxy_pass

Я таки настаиваю:
доки читай по нгинксу.

 ;)
С уважением,
Шурутов Михаил.

Оффлайн K.E.P.

  • Пользователь
  • **
  • Сообщений: 57
  • Рейтинг: 1
    • Просмотр профиля
  • Откуда: Default city
Пришлось немного переделать. Форум начал открываться, но залогинится на нем нельзя было. На машине с апачем создал папку forum и перенёс форум туда. А на nginx в proxy_pass прописал http://192.168.0.2/forum/ и всё заработало в полном объёме. Теперь попробую создать вторую машину с nginx и "зарыбить" их обе.