Страница 1 из 1

nginx

Добавлено: 2007-03-21 17:45:48
selinia
скучно =(
давай-те расвеемся темой о nginx, как известно, лучшем в своём роде web сервером..

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

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

http://domain.com - обрабатывался апачем
http://dl.domain.com - nginx

это всё при условии, что всё на 80 порту.. ибо, если я запускаю nginx на 80 порту, он непускается (порт занят)..

Добавлено: 2007-03-21 18:38:44
dikens3
Это не WEB-Сервер. Я только экспериментировал с ним.
это всё при условии, что всё на 80 порту.. ибо, если я запускаю nginx на 80 порту, он непускается (порт занят)..
Nginx вешается на 80 порт, apache на любой другой.
ну это всё предыстория, если кто-либо работал уже с nginx, то не могли бы вы сказать, можно ли сделать так, чтобы:
100% может, для него это семечки.

nginx.conf
user www www;
worker_processes 20;

error_log /var/log/nginx-error.log debug;

pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
include 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; (порт слушает nginx)
server_name вот тут твои данные;

access_log /var/log/nginx-host.access.log main;

# Main location
location / {
proxy_pass http://192.168.2.9:8080/; - Здесь висит реальный Apache
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 64k;
}

# location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
# root /spool/www/members_ng;
# }


}
}
Здесь можно почитать:
http://blog.kovyrin.net/2006/05/18/ngin ... y/lang/ru/
И далее по ссылкам из статьи.
Оф. сайт тоже рулит.

Добавлено: 2007-03-21 19:09:36
selinia
1) спасибо
2) я тоже из nino =)
3) на том сайте была, и на оф сайте тоже, непомогло =)
4) тоесть, я вешаю апаче на порт 8080, указываю в конфиге nginx
proxy_pass http://192.168.2.9:8080/
и всё работает ?
5) а если я апач оставлю на 80, а nginx на 8080 повешу ?, суть дела не слишком изменится ?
6) у меня http://domain.ru, надо, чтобы http://dl.domain.ru был на nginx

Добавлено: 2007-03-21 19:25:27
dikens3
selinia писал(а):1) спасибо
2) я тоже из nino =)
3) на том сайте была, и на оф сайте тоже, непомогло =)
4) тоесть, я вешаю апаче на порт 8080, указываю в конфиге nginx
proxy_pass http://192.168.2.9:8080/
и всё работает ?
192.168.2.9
5) а если я апач оставлю на 80, а nginx на 8080 повешу ?, суть дела не слишком изменится ?
6) у меня http://domain.ru, надо, чтобы http://dl.domain.ru был на nginx
1. Незачто.
2. Я за Вас рад. Серьёзно. :-)
3. Вот это очень странно. (Там есть картинка, как это работает, повнимательнее смотрите)
4. 192.168.2.9:8080 - Это IP и порт, который слушает apache, у меня был тут. У Вас может быть и другой IP:ПОРТ
5. Смотря как у Вас устроена сеть. Если пробрасывать 80 на 8080 порт, тогда нет, не изменится. Но важно помнить, что по умолчанию, если набрать в Intenet Explorer http://www.rambler.ru, то запрос идёт на IP:80. Порт 80. Там дальше зависит от действий Ramblera.
6. Ну девушка, надо так надо. Мне написать за вас? Выложите конфиг nginx, пусть другие посмотрят, может что умное подскажут.

Добавлено: 2007-03-21 19:56:55
selinia
за меня ничего писать ненадо, я непонимаю принцип..

если я обращаюсь на domain.ru меня кидает на 8080 порт, а не на 80 (ибо апач перевешивается по вашему конфигу), что имхо не хорошо..

надо, чтобы апач был на 80 порту, а nginx отдавал файлы на сервере, только и всего..
и жалательно, чтобы отдавал по 80 порту..

Добавлено: 2007-03-22 11:30:53
dikens3
selinia писал(а):надо, чтобы апач был на 80 порту, а nginx отдавал файлы на сервере, только и всего..и жалательно, чтобы отдавал по 80 порту..
1. Вешаем nginx на 80 порт
2. Вешаем apache IP1:8080
3. Другой apache (или настраиваем virtual host) IP2:8080

Как работает?
Приходит любой запрос.
1. nginx перехватывает имя домена и отправляет на нужный apache (На IP1:8080 или IP2:8080, в зависимости от домена)
2. Все картинки обрабатывает nginx, не передавая ничего apache

Добавлено: 2007-03-22 15:29:32
selinia
поставила так:

Код: Выделить всё

user  www www;
worker_processes  2;

error_log  /var/log/nginx.error.log info;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}

http {
    include       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  fixed-guild.ru  www.fixed-guild.ru;

    access_log  /var/log/dl.access.log  main;

# Main location
location / {
    proxy_pass         http://89.108.89.11: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_body_buffer_size    128k;
    proxy_connect_timeout      90;
    proxy_send_timeout         90;

    proxy_buffer_size          4k;
    proxy_buffers              4 32k;

    proxy_temp_file_write_size 64k;
}

# Static files location
    location ~* ^.+\.(zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|iso)$ {
    root   /spool/www/members_ng;
    }

  }
апач на 8080, всё работает, только 2 вопроса:
что означает это:
location ~* ^.+\.(zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|iso)$ {

я так понимаю, это то, что обрабатывает nginx, тогда почему, если прописать:
jpg|jpeg|gif|png|ico|css
картинки непоказываются ? если дописать iso, то iso файлы нескачиваются ?

и второй вопрос, что означает:
root /spool/www/members_ng;

Добавлено: 2007-03-22 15:32:58
dikens3
selinia писал(а):location ~* ^.+\.(zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|iso)$
Описываем расширения файлов.
selinia писал(а):и второй вопрос, что означает:
root /spool/www/members_ng;
Путь к папке, где эти файлы собственно и лежат. :-)

Добавлено: 2007-03-22 15:36:49
selinia
а если файлы лежат в разных директориях ?
вообще непонятно, файлы неуказанные тут:
location ~* ^.+\.(zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|iso)$

качает nginx, а указанные некачает, как так ?

Добавлено: 2007-03-22 16:21:59
dikens3
selinia писал(а):а если файлы лежат в разных директориях ?
вообще непонятно, файлы неуказанные тут:
location ~* ^.+\.(zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|iso)$

качает nginx, а указанные некачает, как так ?
Предположим запрос на файл film.avi
1. ngnix смотрит, есть ли у него обработка расширения .avi?
2. Если есть отдаёт файл, а если нету, пересылает на apache, а там пусть разбирается apache.
Совершенно незачем apache использовать для раздачи статики.
а если файлы лежат в разных директориях ?
Все файлы, с установленным расширением(zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|iso) должны находится в одном месте.

Добавлено: 2007-03-22 16:56:21
selinia
спасибо