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 есть какие-то штатные инструменты или нужно колхозить парсинг логов? Share this post Link to post Share on other sites
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; } } Share this post Link to post Share on other sites
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 ""; Share this post Link to post Share on other sites
alibek Posted November 11, 2014 · Report post То есть надо прописать все пары IP:порт, как-то так Да, на этот момент не обратил внимания. Исправил, но по прежнему попадаю на site1. Это ж бубульгумnginx! Да не суть, я как-то по старинке, так надежнее. Однако почему-то попадаю не на тот vhost, что ожидаю. Умолчание: server_name ""; Это тоже не помогло, попадаю на site1. stub_status on; Это модуль http_stub_status_module? Я про него прочитал и сделал, такая статистика работает. Но во-первых, непонятно что он считает, общую статистику по всему серверу или статистику по тому серверу, в контексте которого находится. А во-вторых, как-то мне ее недостаточно. Я скорее хотел бы видеть время отклика и размер (трафик). Хотя сводка по запросам/подключениям тоже не будет лишней. Share this post Link to post Share on other sites
Ivan_83 Posted November 11, 2014 · Report post Конфиг в студию. Share this post Link to post Share on other sites
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. Не посоветуете, куда смотреть? Share this post Link to post Share on other sites
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" Share this post Link to post Share on other sites
Ivan_83 Posted November 11, 2014 · Report post Для перла я когда то делал так: http://www.netlab.linkpc.net/forum/index.php?topic=7.0 вроде прогресс ушёл вперёд и кто то с форума (Нитро?) запилил более правильный вариант. Share this post Link to post Share on other sites