=====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''