Это старая версия документа.
nginx
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/ { location ~* ^.+\.(jpg|gif|png|css|js|JPG|GIF)$ { alias /usr/abills/Abills/templates/; } } 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/ { location ~* ^.+\.(jpg|gif|png|css|js|JPG|GIF)$ { alias /usr/abills/Abills/templates/; } } 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
Запускаем 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 ~ \.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 ~ \.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