Posts Tagged ‘ nginx ’

Nginx: легкая настройка.

http://ag-up.com
nginx.conf:

user www-data www-data;
worker_processes 3;
timer_resolution 100ms;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
# multi_accept on;
}

http {
include /etc/nginx/mime.types;

access_log /var/log/nginx/access.log;

ignore_invalid_headers on;
limit_zone gulag $binary_remote_addr 1m;
recursive_error_pages on;
server_name_in_redirect off;
server_tokens off;

sendfile on;
tcp_nopush on;
reset_timedout_connection on;
tcp_nodelay on;

gzip on;
gzip_static on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_min_length 0;
gzip_buffers 64 8k;
gzip_comp_level 9;
gzip_http_version 1.1;
gzip_proxied any;
gzip_types text/plain application/xml application/x-javascript text/css image/x-icon image/bmp;
gzip_vary on;

open_file_cache max=100000 inactive=40s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

}

conf.d/size_limits.conf:

client_body_buffer_size 8k;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 1 1k;

conf.d/timeouts.conf:

client_body_timeout 5;
client_header_timeout 5;
keepalive_timeout 5 5;
send_timeout 5
;

sites-available/default:

server {
listen 80;
server_name 192.168.0.1;

access_log /var/log/nginx/localhost.access.log;

location / {
gzip_static on;
root /var/www/nginx-default;
index index.php index.html index.htm;
allow 10.0.0.90;
allow 172.24.0.195;
allow 172.24.0.196;
allow 172.24.0.204;
deny all;
client_max_body_size 10m;
}

location = /stat {
stub_status on;
access_log off;
allow 10.0.0.90;
allow 172.24.0.195;
allow 172.24.0.196;
allow 172.24.0.204;
deny all;
}

location ~ \.php$ {
fastcgi_intercept_errors on;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include fastcgi_params;
}

location /favicon.ico {
empty_gif;
}

error_page 404 /404.html;
location /404.html {
root /var/www/;
}

if ($request_method !~ ^(GET|POST)$ ) {
return 444;
}

}

Web: nginx+php-cgi+spawn-fcgi

Apache+php — связка старая, стабильная, хорошая, но порой по сравнению с тем же nginx медленная и прожорливая… исправим этот недостаток.
Итак, устанавливаем необходимые компоненты:
aptitude install nginx php5 php-cgi spawn-fcgi

#Вариант 1
Запускаем php-cgi с помощью spawn-fcgi:
spawn-fcgi -f /usr/bin/php-cgi -a 127.0.0.1 -p 9000 -C 2 -P /var/log/nginx/php.pid -u www-data -g www-data

#Вариант 2
или используя юникс сокеты:
exec /usr/bin/spawn-fcgi -s /tmp/php-cgi.sock /usr/bin/php-cgi -C 2 -P /var/log/nginx/php.pid -u www-data -g www-data

Пишем скрипт для запуска в несколько процессов:
#!/bin/bash
exec 2>&1
PHP_FCGI_CHILDREN=3 \
PHP_FCGI_MAX_REQUESTS=1000 \
#Вариант 1 (его оставлю закомменчиным)
#exec /usr/bin/spawn-fcgi -f /usr/bin/php-cgi -a 127.0.0.1 -p 9000 -C 2 -P /var/log/nginx/php.pid -u www-data -g www-data
#Вариант 2
exec /usr/bin/spawn-fcgi -s /tmp/php-cgi.sock /usr/bin/php-cgi -C 2 -P /var/log/nginx/php.pid -u www-data -g www-data

spawn-fcgi – одна из составных частей проекта Lighttpd. Предназначен он для того, что бы запустить php, как FastCGI сервер, ну а с этим сервером может работать потом практически любой http сервер.

Правим конфиг nginx’a для работы с php:
nano /etc/nginx/sites-available/default


location / {
root /var/www/nginx-default;
index index.php index.html index.htm;
}


location ~ \.php$ {
fastcgi_intercept_errors on;
#Вариант 1
#fastcgi_pass 127.0.0.1:9000;
#Вариант 2
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include fastcgi_params;
}

Cтартуем nginx:
/etc/init.d/nginx start

Теперь проверим как работает пыха:
cat > /var/www/nginx-default/index.php
<? phpinfo(); ?>

далее заходим на http://server_ip/index.php

если видим информация о пхп, то всё ок, если не видим, то перечитываем внимательно статью.