=====nginx=====
{{http://nginx.org/nginx.png|}}
http://nginx.org/
Использование nginx позволяет ускорить загрузку статики до 40%.
====FreeBSD====
Проверено на ''FreeBSD 10.1-RELEASE amd64''
Установка из портов:
# cd /usr/ports/www/nginx
# make && make install && make clean
Проверяем установку
# nginx -v
Правим конфиг:
# ee /usr/local/etc/nginx/nginx.conf
Копируем и правим под свои нужды:
user www www;
pid /var/run/nginx.pid;
worker_processes 2; #Recomended to set worker_processes to your CPU cores count
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 9443 ssl;
server_name abills.billing.server.net;
root /usr/abills/cgi-bin;
index index.cgi;
charset utf-8;
access_log /var/log/abills-access.log;
error_log /var/log/abills-error.log;
#error_page 404 /404.html;
ssl_certificate /usr/abills/Certs/server.crt;
ssl_certificate_key /usr/abills/Certs/server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL;
ssl_prefer_server_ciphers off;
location ^~ /images/ {
alias /usr/abills/Abills/templates/;
location ~* \.(jpg|gif|png|css|js|JPG|GIF)$ {
allow all;
}
deny all;
}
location ~ \.cgi|pm$ {
try_files $uri =404;
gzip off;
fastcgi_param HTTPS on;
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
fastcgi_index index.cgi;
fastcgi_param HTTP_CGI_AUTHORIZATION $http_authorization;
fastcgi_param SCRIPT_FILENAME /usr/abills/cgi-bin$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 80;
server_name http.abills.billing.server.net;
root /usr/abills/cgi-bin;
index index.cgi;
charset utf-8;
access_log /var/log/abills-access.log;
error_log /var/log/abills-error.log;
location /admin/ {
deny all;
}
location ^~ /images/ {
alias /usr/abills/Abills/templates/;
location ~* \.(jpg|gif|png|css|js|JPG|GIF)$ {
allow all;
}
deny all;
}
location ~ \.cgi|pm$ {
try_files $uri =404;
gzip off;
fastcgi_param HTTPS on;
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
fastcgi_index index.cgi;
fastcgi_param HTTP_CGI_AUTHORIZATION $http_authorization;
fastcgi_param SCRIPT_FILENAME /usr/abills/cgi-bin$fastcgi_script_name;
include fastcgi_params;
}
}
}
Если до этого не пользовались Apache'ем, генерируем сертификаты
# /usr/abills/misc/certs_create.sh apache
Пропишем в /etc/rc.conf
# echo 'nginx_enable="YES"' >> /etc/rc.conf
Запускаем:
# service nginx start
Проверяем https://192.168.xxx.xxx:9443/admin/
Ожидаемый ответ сервера **''502 Bad Gateway''**, поскольку Nginx не умеет обрабатывать CGI-файлы.
Для обработки CGI скриптов Nginx (в отличие от Apache) нужен внешний обработчик.
Мы используем ''FastCGI''.
**Установка модуля FastCGI для Perl:**
# pkg install p5-FCGI
# pkg install p5-IO-All
Для того, чтобы FastCGI работал в режиме демона нужен ''FCGIWrap'': \\
Установка:
# pkg install fcgiwrap
Пропишем в загрузку:
# echo 'fcgiwrap_enable="YES"' >> /etc/rc.conf
Для обмена данными с ''FastCGI'', ''Nginx'' должен иметь права на файл сокета.
Для этого изменим пользователя, с которым запускается ''fcgiwrap'' и владельца сокета:
echo 'fcgiwrap_user="www"' >> /etc/rc.conf
echo 'fcgiwrap_socket_owner="www"' >> /etc/rc.conf
Запускаем ''fcgiwrap'':
service fcgiwrap start
Проверяем: https://192.168.xxx.xxx:9443/admin/
====Debian====
Проверено на ''Debian wheezy''
Установка:
# apt-get install nginx
Проверяем установку
# nginx -v
Правим конфиг:
# ee /etc/nginx/nginx.conf
Копируем и правим под свои нужды:
user www-data www-data;
pid /var/run/nginx.pid;
worker_processes 2;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 9443 ssl;
server_name abills.billing.server.net;
root /usr/abills/cgi-bin;
index index.cgi;
charset utf-8;
access_log /var/log/httpd/abills-access.log;
error_log /var/log/httpd/abills-error.log;
#error_page 404 /404.html;
ssl_certificate /usr/abills/Certs/server.crt;
ssl_certificate_key /usr/abills/Certs/server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL;
ssl_prefer_server_ciphers off;
location ^~ /images/ {
alias /usr/abills/Abills/templates/;
location ~* \.(jpg|gif|png|css|js|JPG|GIF)$ {
allow all;
}
deny all;
}
location ~ \.cgi|pm$ {
try_files $uri =404;
gzip off;
fastcgi_param HTTPS on;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_index index.cgi;
fastcgi_param HTTP_CGI_AUTHORIZATION $http_authorization;
fastcgi_param SCRIPT_FILENAME /usr/abills/cgi-bin$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 80;
server_name http.abills.billing.server.net;
root /usr/abills/cgi-bin;
index index.cgi;
charset utf-8;
access_log /var/log/httpd/abills-access.log;
error_log /var/log/httpd/abills-error.log;
location ~ ^/admin/.*\.cgi {
deny all;
}
location ^~ /images/ {
alias /usr/abills/Abills/templates/;
location ~* \.(jpg|gif|png|css|js|JPG|GIF)$ {
allow all;
}
deny all;
}
location ~ \.cgi|pm$ {
try_files $uri =404;
gzip off;
fastcgi_param HTTPS on;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_index index.cgi;
fastcgi_param HTTP_CGI_AUTHORIZATION $http_authorization;
fastcgi_param SCRIPT_FILENAME /usr/abills/cgi-bin$fastcgi_script_name;
include fastcgi_params;
}
}
}
Генерируем сертификаты для SSL
# /usr/abills/misc/certs_create.sh apache
Добавим в автозагрузку:
# update-rc.d nginx defaults
Запускаем:
# service nginx start
Проверяем https://192.168.xxx.xxx:9443/admin/
Ожидаемый ответ сервера **''502 Bad Gateway''**, поскольку Nginx не умеет обрабатывать CGI-файлы.
Для обработки CGI скриптов Nginx (в отличие от Apache) нужен внешний обработчик.
Мы используем ''FastCGI''.
**Установка модуля FastCGI для Perl:**
# apt-get install fcgiwrap spawn-fcgi
Пропишем в загрузку:
# update-rc.d fcgiwrap defaults
Запускаем ''fcgiwrap'':
service fcgiwrap start
Проверяем: https://192.168.xxx.xxx:9443/admin/\\
\\
\\
За конфиги спасибо ''r00tk1d''