alibek Posted November 10, 2014 · Report post Помогите настроить nginx. Структура каталогов следующая: /sites /sites/default /sites/default/www /sites/default/log /sites/site1 /sites/site1/www /sites/site1/log /sites/site2 /sites/site2/www /sites/site2/log /sites/site3 /sites/site3/www /sites/site3/log Тут три сайта site1, site2 и site3, а также дефолтный сайт-заглушка default. Сами сайты лежат в подкаталогах www, в подкаталоге log лежат log-файлы для сайта. Чтобы определить, куда же я попал, в www/index.html лежит наименование соответствующего подкаталога (в теге TITLE). У меня такая конфигурация сейчас: user nobody; worker_processes 2; error_log /var/log/nginx_errors.log info; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; access_log /var/log/nginx_access.log main; sendfile on; keepalive_timeout 65; gzip on; server { listen localhost:80; server_name localhost; charset utf-8; root /sites/default/www; location / { index index.html index.htm; } error_page 404 /error-404.html; error_page 500 502 503 504 /error-50x.html; location ~ /error-...\.html$ { root /sites/default/err; } location ~ /\.ht { deny all; } } server { listen 80 default_server; server_name default; access_log /sites/default/log/access.log main; location / { root /sites/default/www; index index.html index.htm; } } server { listen 10.1.128.12:80; server_name site1.domain.local; access_log /sites/site1/log/access.log main; location / { root /sites/site1/www; index index.html index.htm; } } } Захожу на site1.domain.local - попадаю на site1. Захожу на nosite.domain.local - и снова попадаю на site1, а не на default. Что я упустил? И еще вопрос, а где получать статистику по загрузке сервера? В lighttpd есть встроенная выгрузка в rrd, а апаче есть своя статистика. В nginx есть какие-то штатные инструменты или нужно колхозить парсинг логов? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
DDR Posted November 10, 2014 · Report post Захожу на site1.domain.local - попадаю на site1. Захожу на nosite.domain.local - и снова попадаю на site1, а не на default. Что я упустил? Из документации Если у директивы есть параметр default_server, то сервер, в котором описана эта директива, будет сервером по умолчанию для указанной пары адрес:порт. Если же директив с параметром default_server нет, то сервером по умолчанию будет первый сервер, в котором описана пара адрес:порт. То есть надо прописать все пары IP:порт, как-то так server { listen 80 default_server; listen 10.1.128.12:80 default_server; server_name default; access_log /sites/default/log/access.log main; location / { root /sites/default/www; index index.html index.htm; } } Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted November 10, 2014 · Report post http://nginx.org/ru/...processing.html От якобы дефолтного сервера ничего не наследуется в другие сервера, и все опции нужно писать либо на уровень выше либо дублировать в каждом сервере. Чтобы определить, куда же я попал, в www/index.html лежит наименование соответствующего подкаталога (в теге TITLE). Это ж бубульгумnginx! location / { more_set_headers 'Content-Type: text/plain'; add_header Cache-Control 'max-age=30, must-revalidate'; return 200 $http_host; } more_set_headers - функция из одного из дополнительных модулей, headers_more что ли. Можно и хтмл генерить попробовать, по типу: return 200 "Ya tut: $http_host"; # server stat location ^~ /status { stub_status on; } server_name default; Неа. http://nginx.org/ru/...tml#server_name Умолчание: server_name ""; Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted November 11, 2014 · Report post То есть надо прописать все пары IP:порт, как-то так Да, на этот момент не обратил внимания. Исправил, но по прежнему попадаю на site1. Это ж бубульгумnginx! Да не суть, я как-то по старинке, так надежнее. Однако почему-то попадаю не на тот vhost, что ожидаю. Умолчание: server_name ""; Это тоже не помогло, попадаю на site1. stub_status on; Это модуль http_stub_status_module? Я про него прочитал и сделал, такая статистика работает. Но во-первых, непонятно что он считает, общую статистику по всему серверу или статистику по тому серверу, в контексте которого находится. А во-вторых, как-то мне ее недостаточно. Я скорее хотел бы видеть время отклика и размер (трафик). Хотя сводка по запросам/подключениям тоже не будет лишней. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted November 11, 2014 · Report post Конфиг в студию. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted November 11, 2014 · Report post С виртуальным хостом разобрался, заработало. Теперь не могу прикрутить Perl никак. nginx.conf user www; worker_processes 2; error_log /var/log/nginx_errors.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] "$request" $status $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; keepalive_timeout 65; gzip on; gzip_min_length 1100; gzip_buffers 64 8k; gzip_comp_level 3; gzip_http_version 1.1; gzip_proxied any; gzip_types text/plain application/xml application/x-javascript text/css; server { listen localhost:80; server_name localhost; charset utf-8; root /data/sites/default/www; location / { index index.html index.htm; add_header Cache-Control 'max-age=30, must-revalidate'; } error_page 404 /error-404.html; error_page 500 502 503 504 /error-50x.html; location ~ /error-...\.html$ { root /data/sites/default/err; } location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } location ~ /\.ht { deny all; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } } include vhosts.conf; } vhosts.conf server { listen 10.1.128.12:80 default_server; server_name ""; access_log /data/sites/default/log/access.log main; location / { root /data/sites/default/www; index index.html index.htm; } } server { listen 10.1.128.12:80; server_name selfmon.mydomain.local; access_log /data/sites/selfmon/log/access.log main; root /data/sites/selfmon/www; location / { index index.php index.html index.htm; } location ~ \.php$ { fastcgi_pass unix:/var/run/wwwpool.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ \.pl$ { fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock; fastcgi_index index.pl; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } В php.conf добавлено "cgi.fix_pathinfo = 0". php-fpm.conf [global] pid = run/php-fpm.pid [wwwpool] user = www group = www listen = /var/run/$pool.sock listen.owner = www listen.group = www listen.mode = 0660 pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 /etc/rc.conf nginx_enable="YES" php_fpm_enable="YES" fcgiwrap_enable="YES" fcgiwrap_user="www" #fcgiwrap_flags="-c 2 -M 0660" #fcgiwrap_socket="unix:/var/run/fastcgi.sock" Если я раскомментирую любую из строк, то fcgiwrap не стартует. В /data/sites/selfmon/www лежат test.php и test.pl, которые выводят "test", разрешения 664. Захожу на http://selfmon.mydomain.local/test.php - вроде бы работает, выдает текст "test". Захожу на http://selfmon.mydomain.local/test.pl - ошибка, причем ее возвращает nginx. В /var/log/nginx_errors.log ошибок нет. В /data/sites/selfmon/log/access.log есть обращения к test.pl. Если для test.pl назначено разрешение 664, то ошибка 403. Если для test.pl назначено разрешение 775, то ошибка 502. Не посоветуете, куда смотреть? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted November 11, 2014 · Report post Какая-то вещь в себе, nginx с FastCGI. test.pl был такой: print "Test - Perl\n"; Если делаю его таким: #!/usr/bin/perl -w print "Test - Perl\n"; тогда nginx сваливается с ошибкой 502. В /var/log/nginx_errors.log появляются следующие строки: [error] 71726#0: *11 upstream prematurely closed FastCGI stdout while reading response header from upstream, client: 10.1.144.3, server: selfmon, request: "GET /test.pl HTTP/1.1", upstream: "fastcgi://unix:/var/run/fcgiwrap/fcgiwrap.sock:", host: "selfmon.mydomain.local" Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted November 11, 2014 · Report post Для перла я когда то делал так: http://www.netlab.linkpc.net/forum/index.php?topic=7.0 вроде прогресс ушёл вперёд и кто то с форума (Нитро?) запилил более правильный вариант. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...