Содержание

nginx

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