Реклама на сайте Advertise with us

Не получается nginx + apache

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 29.05.09
Сообщения: 466
Рейтинг: 231

Ссылка на сообщениеДобавлено: 25/11/09 в 21:03       Ответить с цитатойцитата 

icon_confused.gif

Проблема: вместо означенного в конфиге nginx хоста вываливается дефолтовая страничка Apache 2 Test Page powered by CentOS. Как nginx заставить отдавать только статику, а апач результаты скриптов? Уважаемые гуру подскажите пожалуйста где я наступил на грабли?

nginx 0.7.61, apache 2.2 (php установлен как mod_php)

на апаче (2.2) висит несколько virtual hosts прописанных следующим образом:

Код:

NameVirtualHost xxx.xxx.xxx.xxx

<VirtualHost xxx.xxx.xxx.xxx>
ServerName _default
DocumentRoot /var/empty
</VirtualHost>

<VirtualHost xxx.xxx.xxx.xxx>
...
</VirtualHost>


В httpd.conf прописал mod_rpaf и Listen 127.0.0.1:8080.

Конфигурация nginx (почти все честно сдерто с конфы уважаемого Pentarh, он где-то здесь её вылаживал, хочу научиться, взял его конф для примера):
Код:

user  apache;
worker_processes  1;
#worker_rlimit_nofile 16384;


error_log  /var/log/nginx/nginx.err.log crit;
pid        /var/run/nginx.pid;


events {
    worker_connections  16384;
    use epoll;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    keepalive_timeout  15;

    gzip on;
    gzip_disable .MSIE [1-6].;
    gzip_min_length 1100;
    gzip_buffers 4 8k;
    gzip_types text/plain text/css text/xml application/x-javascript;

    server {
        listen xxx.xxx.xxx.xxx:80 default deferred;
        server_name  myhost.com;
        set $p $host;
        if ($host ~ www\.(.*)) { set $p $1; }
        access_log off;

        location / {
            proxy_pass http://127.0.0.1:8080/;
            proxy_redirect off;
            proxy_set_header Host $p;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Test $remote_addr;
            proxy_set_header X-Host $http_host;
            proxy_set_header X-URI $uri;
            proxy_set_header X-ARGS $args;
            proxy_set_header Refer $http_refer;
        }

        location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|js|swf|wmv|mpg|flv)$ {
            root /home/username/myhost.com/html;
        }

        location ~ /\.ht {
            deny  all;
        }
    }
}


Последний раз редактировалось: megreep (26/11/09 в 09:28), всего редактировалось 1 раз

Не завидуй, но добивайся сам. Расти, когда хочется умереть.

0
 



С нами с 22.06.09
Сообщения: 88
Рейтинг: 233

Ссылка на сообщениеДобавлено: 25/11/09 в 21:48       Ответить с цитатойцитата 

А в дире вирт. хоста какой-то index.html есть вообще?
И добавь еще кроме картинок и видео, расширения .htm .html в nginx.

0
 



С нами с 29.05.09
Сообщения: 466
Рейтинг: 231

Ссылка на сообщениеДобавлено: 25/11/09 в 21:50       Ответить с цитатойцитата 

пробовал для первого виртуал хоста - там форум рабочий и index.php

вот что пишется в nginx.err.log:
Код:
2009/11/25 19:46:17 [error] 18528#0: *3 open() "/home/username/myhost.com/html/images/smilies/icon_smile.gif" failed (2: No such file or directory), client: 93.185.177.9, server: ~^(.*)$, request: "GET /images/smilies/icon_smile.gif HTTP/1.1", host: "xxx.xxx.xxx", referrer: "http://xxx.xxx.xxx/viewtopic.php?t=4360"
2009/11/25 19:46:17 [notice] 18528#0: *5 "www\.(.*)" does not match "xxx.xxx.xxx", client: 93.185.177.9, server: ~^(.*)$, request: "GET /download/file.php?avatar=1348.gif HTTP/1.1", host: "xxx.xxx.xxx", referrer: "http://xxx.xxx.xxx/viewtopic.php?t=4360"


еще - первый хост на котором пробовал, там myhost.com пустышка, а форум находится на forum.myhost.com (физически - папка в /html/, распознование поддоменов через rewrite правила).

может для поддоменов нужно отдельные контейнеры server {} прописывать? если так, то можно ли как-то это дело автоматизировать?

Не завидуй, но добивайся сам. Расти, когда хочется умереть.

0
 



С нами с 22.06.09
Сообщения: 88
Рейтинг: 233

Ссылка на сообщениеДобавлено: 25/11/09 в 22:38       Ответить с цитатойцитата 

nginx не обрабатывает .htaccess, поэтому реврайты не работают.
Можно попробывать переписать их под nginx в конфиге, ну или отдельные хосты, если их там 1-2 поддомена.
А ошибки в логах - не может найти какие-то картинки, либо их там нет, либо прав у нгинкса на них нет.

0
 



С нами с 29.05.09
Сообщения: 466
Рейтинг: 231

Ссылка на сообщениеДобавлено: 25/11/09 в 23:43       Ответить с цитатойцитата 

прописал каждый поддомен отдельным контейнером server {} - та же шляпа... icon_twisted.gif

и вообще nginx какого-то хрена при правильном прописаном root спрашивает не там эти файлы -
Код:
2009/11/25 22:36:13 [error] 20813#0: *53 open() "/home/username/myhost.com/html/forum/templates/subSilver/images/icon_mini_arh.gif" failed (2: No such file or directory), client: 84.51.199.178, server: forum.wce.by, request: "GET /templates/subSilver/images/icon_mini_arh.gif HTTP/1.1", host: "xxx.xxx.xxx", referrer: "http://209.85.135.132/search?q=cache:ZDmgV9MtUK8J:xxx.xxx.com/viewtopic.php%3Ft%3D10239+%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C+FunContact+wm2003&cd=15&hl=ru&ct=clnk&client=opera"

здесь nginx смотрит - http://forum.xxx.com/templates/subSilver/images/icon_mini_arh.gif, а надо http://forum.xxx.com/styles/prosilver/templates/subSilver/images/icon_mini_arh.gif, то есть пропускается styles/prosilver, почему?

еще иногда в логах проскакивает
Код:
client sent invalid header line: "SWF_HDR_MSG: 1" while reading client request headers

это что такое?

Не завидуй, но добивайся сам. Расти, когда хочется умереть.

0
 



С нами с 29.05.09
Сообщения: 466
Рейтинг: 231

Ссылка на сообщениеДобавлено: 26/11/09 в 09:24       Ответить с цитатойцитата 

гуру... ау... icon_biggrin.gif

Не завидуй, но добивайся сам. Расти, когда хочется умереть.

0
 



С нами с 01.09.09
Сообщения: 132
Рейтинг: 100

Ссылка на сообщениеДобавлено: 26/11/09 в 11:22       Ответить с цитатойцитата 

Цитата:
может для поддоменов нужно отдельные контейнеры server {} прописывать? если так, то можно ли как-то это дело автоматизировать?
Код:
server_name *.domain.com;


Проверь конфиг апача.
Код:
NameVirtualHost 127.0.0.1:8080
такое есть?

Код:
<VirtualHost xxx.xxx.xxx.xxx>
ServerName _default
DocumentRoot /var/empty
</VirtualHost>
Можно убрать

Остальные виртуалхосты:
Код:
<VirtualHost 127.0.0.1:8080>
ServerName domain.com
...


про правила реврайта в .htaccess - как уже сказали, можно забыть.

VPN с наворотами

0
 



С нами с 29.05.09
Сообщения: 466
Рейтинг: 231

Ссылка на сообщениеДобавлено: 26/11/09 в 17:20       Ответить с цитатойцитата 

попробовал на локале развернуть тестовую конфигурацию apache 2.2 + nginx с таким вот конфигом:

Код:
        user  nginx;
        worker_processes  2;
        error_log  /var/log/nginx/error.log debug;
        pid        /var/run/nginx.pid;

        events {
            worker_connections  1024;
         }

        http {
            include       /etc/nginx/mime.types;
            default_type  application/octet-stream;
            log_format  main  '$remote_addr - $remote_user [$time_local] $status '
                                '"$request" $body_bytes_sent "$http_referer" '
                                '"$http_user_agent" "http_x_forwarded_for"';
            access_log  /var/log/nginx/access.log  main;
            sendfile        on;
            tcp_nopush     on;
            tcp_nodelay    on;
            server {
                listen       80;
                server_name     _;
                server_name_in_redirect  off;
                access_log  /var/log/nginx/host.access.log  main;
                location / {
                 proxy_pass         http://127.0.0.1:8080/;
                 proxy_redirect     off;
                 proxy_set_header   Host             $host;
                 proxy_set_header   X-Real-IP        $remote_addr;
                 proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                 client_max_body_size       10m;
                 client_body_buffer_size    128k;
                 proxy_connect_timeout      90;
                 proxy_send_timeout         90;
                 proxy_read_timeout         90;
                 proxy_buffer_size          4k;
                 proxy_buffers              4 32k;
                 proxy_busy_buffers_size    64k;
                 proxy_temp_file_write_size 10m;
                 }
                }
        }


вопрос: как определить что конкретно отдает нгинкс а что апач? как указывать нгинксу отдавать только статичные файлы а php скрипты передавать апачу? можно ли в таком случае указывать просто

Код:
        location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|js|swf|wmv|mpg|flv)$ {
            root /home/username/myhost.com/html;
        }

без root .... ?

Не завидуй, но добивайся сам. Расти, когда хочется умереть.

0
 



С нами с 22.06.09
Сообщения: 88
Рейтинг: 233

Ссылка на сообщениеДобавлено: 26/11/09 в 18:45       Ответить с цитатойцитата 

Без root откуда нгинкс будет знать где искать файлы?
А определить что отдаёт можно по логам, в access_log-е апача должны быть запросы только к скриптам.

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 26/11/09 в 19:04       Ответить с цитатойцитата 

/home/username/myhost.com/html - это место вообще существует? похоже ты взял мой экзампл конфига, но ничего в нем не правил.

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 26/11/09 в 19:51       Ответить с цитатойцитата 

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

0
 



С нами с 29.05.09
Сообщения: 466
Рейтинг: 231

Ссылка на сообщениеДобавлено: 26/11/09 в 21:06       Ответить с цитатойцитата 

bb-support: уже определился по логам апача.

Pentarh: конечно существует, я что дурней паровоза icon_smile.gif пермишны и владельцы папок хостов все корректные. на локале я взял за основу конфиг с opennet.ru, там статья на эту тему была, твой я уже на продакшне разверну с поправками на мои хосты icon_smile.gif за конфиг пасиб.

получается, нужно прописывать для каждого хоста который есть в апаче, отдельный контейнер server {...} в конфиге nginx и там уже указывать конкретно для этого хоста откуда статику отдавать? сейчас вот таким образом сделал на локальной машине - работают два разных хоста, nginx отдается статику корректно из нужных папок, а апач отдает результат работы скритов.

Не завидуй, но добивайся сам. Расти, когда хочется умереть.

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »