LINUX.ORG.RU
решено ФорумAdmin

Как обойти связку nginx + apache

 , ,


0

1

Привет. Имеется веб-сервер со связкой nginx в качестве front-end и apache в качестве back-end. Но возникла ситуация, в которой один из необходимых движков не может работать через nginx (разработчики обещали пофиксить проблему, но решение нужно уже вчера). В связи с этим вопрос: возможно ли запустить один виртуальный хост в обход связки и попадать на него напрямую, без nginx? При этом связка для остальных хостов должна остаться на месте. Заранее спасибо.



Последнее исправление: cetjs2 (всего исправлений: 2)

а что мешает почитать документацию на nginx.org?

visual ★★★
()

поднять на сервере второй IP и поднять второй apache (через chroot) на нем, в котором будет крутиться этот сайт. либо второй сервер,контейнер, виртуалка

Vlad-76 ★★★★
()
Ответ на: комментарий от Vlad-76

Эх. Этого я и опасался. Спасибо за помощь, буду пробовать.

DxdV
() автор топика

Но возникла ситуация, в которой один из необходимых движков не может работать через nginx (разработчики обещали пофиксить проблему, но решение нужно уже вчера).

как это вообще возможно?

xtraeft ★★☆☆
()
Ответ на: комментарий от xtraeft

Я могу неправильно понимать ситуацию, поскольку у меня небольшой опыт. В домашней сети нужно запустить owncloud, однако после установки возникает проблема с путями. Пути вида domain.com/index.php/apps..... И, соответственно, по данным путям ничего не обнаруживается, в итоге имею кашу из текста и непрогруженных css, js и т.д. Изучение вопроса показало, что такая проблема возникает в связке нгинкса и апача и как-то связана с проксированием одного на другое. Распространённый совет подправить modRewrite в .htaccess мне не помог. На гитхабе проекта на эту тему валяется баг, который ещё не закрыт. Поправьте, если ошибаюсь.

DxdV
() автор топика
Ответ на: комментарий от DxdV

И, соответственно, по данным путям ничего не обнаруживается, в итоге имею кашу из текста и непрогруженных css, js и т.д.

так может в конфиге прописано статику типа css/js отдавать nginx без проксирования на апач?
если так, то можно для начала просто убрать эту опцию из конфига вхоста (в конфиге nginx).

xtraeft ★★☆☆
()
Ответ на: комментарий от xtraeft

Всё так и настроено, но проблема не в кешировании. По правильному адресу картинки и весь контент открывается. Загвоздка в том, что путь должен быть domain.com/data/css/****, а вместо этого domain.com/index.php/data/css/***. То есть нужный путь просто дописывается в конец текущего адреса, вместо того, чтобы сбрасывать index.php и вести путь от домена.

DxdV
() автор топика
Ответ на: комментарий от xtraeft

Блин, потерял :( Ищу, займёт немного времени. Пока что могу привести лишь ссылку на одно из немногих решений, которое я нашёл. http://www.acloudtree.com/how-to-remove-index-php-from-owncloud-url-path/ Мне не помогло, к сожалению. Ссылку на баг ищу.

DxdV
() автор топика
Ответ на: комментарий от DxdV

а почему бы не настроить правила rewrite для css/js в nginx?

xtraeft ★★☆☆
()

Содержимое этого nginx vhost в студию. Убери все, оставь только location / и proxy_pass внутри. Все пойдет на Апач.

Bers666 ★★★★★
()
Ответ на: комментарий от Bers666

Если выкинуть всё, что касается fastcgi и ssl (я пока без него), конфиг выглядит так:

server {
listen 80;
server_name somedomain.ru *.somedomain.ru;
access_log /var/log/nginx.access_log;
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|$
root /var/www/blackjackmail/;
index index.html index.php;
access_log off;
expires 30d;
}


location ~ /\.ht {
deny all;
}

location / {
proxy_pass http://127.0.0.1:6543/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;

}
DxdV
() автор топика
Ответ на: комментарий от xtraeft

Я, честно говоря, даже не помню, зачем это добавил. Да, пробовал, изначально было без. От безысходности я втыкал в конфиг всё, что под руки попадало в результате поисков.

DxdV
() автор топика
Ответ на: комментарий от DxdV
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|$
root /var/www/blackjackmail/;

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

xtraeft ★★☆☆
()
Ответ на: комментарий от xtraeft

Спасибо! Решение с удалением кешируемых форматов помогло. Надо было с самого начала вас послушать. Буду разбираться, что не так с кешированием.

DxdV
() автор топика
Ответ на: комментарий от xtraeft

Прошу прощения за тупость, у меня уже не варит котелок. Это куда нужно добавить? В конфиг хоста?

DxdV
() автор топика
Ответ на: комментарий от xtraeft

Не помогло. При возвращении форматов в список кешируемых всё опять падает. В любом случае, огромное вам спасибо. Правда, даже словами не выразить, от какого вывиха мозга вы меня спасли. Чёрт с ним с этим нгинксом, я рад уже тому, что это просто РАБОТАЕТ. Я ваш должник. Если вдруг потребуется что-то сверстать или задизайнить шаблончик, я к вашим услугам!

DxdV
() автор топика
Ответ на: комментарий от xtraeft

На nginx, кстати, проксирование с NTLM-авторизацией не работает.

undertaker ★★
()
Ответ на: комментарий от codeogre

Содержимое такое:

<IfModule mod_fcgid.c>
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1
RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION
</IfModule>
</IfModule>
</IfModule>
ErrorDocument 403 /core/templates/403.php
ErrorDocument 404 /core/templates/404.php
<IfModule mod_php5.c>
php_value upload_max_filesize 513M
php_value post_max_size 513M
php_value memory_limit 512M
<IfModule env_module>
  SetEnv htaccessWorking true
</IfModule>
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^.well-known/host-meta /public.php?service=host-meta [QSA,L]
RewriteRule ^.well-known/host-meta.json /public.php?service=host-meta-json [QSA$
RewriteRule ^.well-known/carddav /remote.php/carddav/ [R]
RewriteRule ^.well-known/caldav /remote.php/caldav/ [R]
RewriteRule ^apps/calendar/caldav.php remote.php/caldav/ [QSA,L]
RewriteRule ^apps/contacts/carddav.php remote.php/carddav/ [QSA,L]
RewriteRule ^apps/([^/]*)/(.*\.(css|php))$ index.php?app=$1&getfile=$2 [QSA,L]
RewriteRule ^remote/(.*) remote.php [QSA,L]
</IfModule>
<IfModule mod_mime.c>
AddType image/svg+xml svg svgz
AddEncoding gzip svgz
</IfModule>
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
AddDefaultCharset utf-8
Options -Indexes
DxdV
() автор топика
Ответ на: комментарий от DxdV

RewriteRule ^apps/([^/]*)/(.*\.(css|php))$ index.php?app=$1&getfile=$2 [QSA,L]

CSS в этом движке судя по всему генерится динамически, так что делать rewrite в nginx нет особого смысла - запрос все равно в апач уйдет.

codeogre
()
Ответ на: комментарий от true_admin

Порты? А при чём тут порты? В любом случае, порты я пробрасываю первым делом, это уже рефлекс.

DxdV
() автор топика
Ответ на: комментарий от codeogre

Ну, сейчас, хотя бы, работает всё, пусть и без кеширования. Почему нгинкс не кеширует статику я разберусь. Как только найду решение, подробно отпишу.

DxdV
() автор топика
Ответ на: комментарий от DxdV

А, тебе надо наружу выставить.

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

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Вот в том-то и дело, что у меня тоже все сайты так работают и проблем нет никаких. На этом сервере висит помимо этого оунклауда ещё примерно 15 сайтов, каждый из которых и работает по такой связке без каких-либо проблем. А тут что-то не заладилось, хотя всё настраивал как всегда.

DxdV
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.