Установка и настройка Nginx

nginx (engine x) — это веб-сервер и обратный прокси-сервер, а также почтовый прокси-сервер.

Устанавливаем в Ubuntu:

sudo apt-get install nginx

Стандартный каталог для www файлов — /usr/share/nginx/www.

Редактируем конфигурационный файл /etc/nginx/nginx.conf по своим потребностям.
Опишу некоторые параметры стандартного конфигурационного файла:

# Пользователь от имени которого работает nginx.
user www-data; 
# Число рабочих процессов. Оптимальное значение зависит от многих факторов, количества ядер процессора, винчестеров, нагрузки. auto - устанавливается автоматически.
worker_processes 2;

# Файл в котором будет храниться номер (PID) основного процесса.
pid /var/run/nginx.pid;

events {
	# Колличество соединений на процесс.
        worker_connections 1768;
	# Если выключено, то рабочий процесс за раз будет принимать только одно новое соединение, иначе - все.
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##
        # Включение или отключение sendfile.
        sendfile on;
	# При включении позволяет передавать заголовок ответа и начало файла в одном пакете, передавать файл полными пакетами.
        tcp_nopush on;
	# Использование параметра TCP_NODELAY. Используется при переходе соединения в состояние keep-alive.
        tcp_nodelay on;
	# Время в секундах, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера.
        keepalive_timeout 65;
	# Максимальный размер хэш-таблиц типов
        types_hash_max_size 2048;
	# Отображать ли версию nginx в сообщениях об ошибках и в поле "Server" заголовка ответа
        # server_tokens off;

	# Размер корзины в хэш-таблицах имён серверов (32|64|128)
        # server_names_hash_bucket_size 64;
	# Указывание порта в перенаправлениях, выдаваемых от nginx
        # server_name_in_redirect off;

	# Подключение к файлу конфигурации файла mime.types.
        include /etc/nginx/mime.types;
	# MIME-тип ответов по умолчанию.
        default_type application/octet-stream;

        ##
        # Logging Settings
        ##

	# Путь, формат и настройки логов
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##
	# Разрешает или запрещает сжатие ответа методом gzip.
        gzip on;
	# Запрещает сжатие ответа методом gzip для запросов с полями заголовка “User-Agent” похожими на указанные.
        gzip_disable "msie6";

	# gzip_vary on;
	# Настройка сжатия ответа методом gzip для проксированных запросов (off - запрещено,  expired - сжимать, если в заголовке ответа есть поле “Expires” со значением, запрещающим кэширование, no-cache - сжимать, если в заголовке ответа есть поле “Cache-Control” с параметром “no-cache”, no-store - сжимать, если в заголовке ответа есть поле “Cache-Control” с параметром “no-store”, private - сжимать, если в заголовке ответа есть поле “Cache-Control” с параметром “private”, no_last_modified - сжимать, если в заголовке ответа нет поля “Last-Modified”, no_etag - сжимать, если в заголовке ответа нет поля “ETag”, auth - сжимать, если в заголовке запроса есть поле “Authorization”, any - сжимать все проксированные запросы. 
        # gzip_proxied any;
	# Степень сжатия (от 1 до 9)
        # gzip_comp_level 6;
	# Число и размер буферов в которые будет сжиматься ответ.
        # gzip_buffers 16 8k;
	# Минимальная HTTP-версия запроса для сжатия ответа.
        # gzip_http_version 1.1;
	# Сжатие ответа методом gzip для указанных MIME-типов в дополнение к "text/html". "text/html" сжимаются всегда.
        # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

        ##
        # nginx-naxsi config
        ##
        # Uncomment it if you installed nginx-naxsi
        ##

        #include /etc/nginx/naxsi_core.rules;

        ##
        # nginx-passenger config
        ##
        # Uncomment it if you installed nginx-passenger
        ##

        #passenger_root /usr;
        #passenger_ruby /usr/bin/ruby;

        ##
        # Virtual Host Configs
        ##

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

#mail {
#       # See sample authentication script at:
#       # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#       # auth_http localhost/auth.php;
#       # pop3_capabilities "TOP" "USER";
#       # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#       server {
#               listen     localhost:110;
#               protocol   pop3;
#               proxy      on;
#       }
#
#       server {
#               listen     localhost:143;
#               protocol   imap;
#               proxy      on;
#       }
#}

Создаем файл в директории /etc/nginx/sites-available/ с именем нашего домена. Пример содержимого файла как proxy apache2:

server {
listen 80;
server_name example.com www.example.com;
access_log /var/log/nginx.access_log;
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
root /var/www/example.com/;
index index.html index.php;
access_log off;
expires 30d;
}
location ~ /\.ht {
deny all;
}
location / {
proxy_pass http://127.0.0.1:81/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}

Активируем домен, то есть делам ссылку в директорию с конфигами которые загружает nginx:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Перезапускаем apache2 и nginx:

sudo /etc/init.d/apache2 restart
sudo /etc/init.d/nginx restart

Чтобы в логах отображались ip пользователей, а не 127.0.0.1, ставим:

sudo apt-get install libapache2-mod-rpaf

и добавляем в конец конфига апача:

# Включаем модуль
RPAFenable On
# Доводит до ума X-Host
RPAFsethostname On
# Адрес фронтенда (nginx)
RPAFproxy_ips 127.0.0.1
# Имя отправляемого заголовка
RPAFheader X-Forwarded-For

Еще документация: nginx.org/ru/docs/

Добавить комментарий