Nginx/proxy

Чтобы воспринимался IP реальный make install clean -C /usr/ports/www/mod_rpaf2

Раскоментирровать в httpd.conf подгрузку модуля
 * 1) LoadModule rpaf_module       libexec/apache22/mod_rpaf.so

прописываем все? адреса нашего сервера через пробел

RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1 176.9.8.227 RPAFheader X-Forwarded-For

nginx location / { proxy_pass             http://127.0.0.1:88; proxy_set_header       Host             $host; #       proxy_set_header        X-Real-IP proxy_set_header       X-Forwarded-For

Проксирование http-запросов средствами nginx
ACHTUNG! возможно инструкция неполная.

Перед установкой добавляем в rc.conf еще один алиас на интерфейс: ifconfig_lo0_alias0="inet 10.10.10.1/32"

Потом добавляем этот IP в rc.conf jail_ _ip IP 10.10.10.1 Затем идем в тазик и делаем следующее:

попутно раскоментируя "LoadModule realip_module" и "AddModule mod_realip.c" для apache-2.2 ставьте rpaf, инструкция есть где-то на вики -прим. exe) libexec/apache/mod_unique_id.so и #AddModule mod_unique_id.c
 * cvsup /etc/supfile-ports
 * делаем cd /usr/ports/www/mod_realip && make install clean
 * httpd.conf и делаем Listen 10.10.10.1:80 и ServerName 10.10.10.1,
 * Добавляем "RealIP on" в районе "ExtendedStatus"(только для apache-1.3,
 * Коментим #LoadModule unique_id_module
 * ставим у "клиентских" виртхостов CustomLog /dev/null agent
 * сохраняем изменения в httpd.conf
 * идем в /usr/ports/www/nginx и делаем make install clean
 * создаем примерно такой конфиг /usr/local/etc/nginx/nginx.conf :

Заменив следующие строки на нужные:
 * 1) server_name .ru www. .ru;


 * 1) * root /home/ /www;

user www www; worker_processes 2; error_log /var/log/nginx-error.log;

events { worker_connections 4096; }

http { include      mime.types; default_type application/octet-stream;

log_format main  '$remote_addr - $remote_user [$time_local] $request ' '"$status" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx-access.log  main;

sendfile       on; #tcp_nopush    on; keepalive_timeout 65; tcp_nodelay       on; proxy_max_temp_file_size 0; //added by exe proxy_buffers  8 32k; //added by exe

server { listen      80 default;

location / { proxy_pass             http://10.10.10.1:80/; proxy_set_header       Host             $host; proxy_set_header       X-Real-IP $remote_addr; }

}

server { listen      80; server_name .ru www. .ru;

location ~* ^.+\.(jpeg|jpg|gif|wmv|avi|mpeg|flv|3gp|mov|rar|zip)$ { root /home/ /www;

}

location / { proxy_pass             http://10.10.10.1:80; proxy_set_header       Host             $host; proxy_set_header       X-Real-IP $remote_addr; }

} } apachectl configtest && nginx -t
 * делаем

если все ништяк, Syntax OK 2008/02/10 22:24:43 [info] 4539#0: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok 2008/02/10 22:24:43 [info] 4539#0: the configuration file /usr/local/etc/nginx/nginx.conf was tested successfully то: /var/log/nginx*.log    root:wheel      600  3     *    @T05  ZG /var/run/nginx.pid 30 apache_enable="YES" nginx_enable="YES"
 * добавляем в /etc/newsyslog.conf:
 * в /etc/rc.conf
 * делаем с мастер-машины /etc/netstart && /etc/rc.d/jail restart

Если есть необходимость(т.е. очень большая нагрузка, иначе делать не надо -прим. exe): net.inet.ip.portrange.randomized=0 net.inet.ip.portrange.first=1024 net.inet.ip.portrange.last=65535 net.inet.tcp.msl=7500

Проксирование https-запросов (ssl) средствами nginx
В отдельных случаях помимо настройки nginx для работы на 80 порту (http) может дополнительно понадобится настройка nginx для работы на 443 порту (https). Подразумевается, что у нас на сервере уже установлен и работает nginx, который, например, обслуживает http-запросы. Также на сервере уже есть ssl-сертификаты для доменов (самоподписанные или выданные авторизованным центром) и файлы ключей.

--with-http_ssl_module" apache2.conf) все строки, относящиеся к ssl: Listen *:443  NameVirtualHost *:443 и полностью все секции вирхостов, которые относятся к ssl ()
 * Добавляем в конфигурационный файл nginx.conf внутрь секции http строки:

ssl                 on; ssl_protocols       SSLv3 TLSv1; ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5; ssl_certificate     /home/httpd-cert/домен.crt;  #путь до сертификата ssl_certificate_key /home/httpd-cert/домен.key;  #путь до файла ключа ssl_session_cache   shared:SSL:10m; ssl_session_timeout 20m;

location ~* ^/(webstat/|awstats|webmail/|myadmin/|manimg/) { proxy_pass http://IP_сайта:8080; proxy_redirect http://$host:8080/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; }                location ~* ^.+\.(ico|jpg|jpeg|gif|png|svg|js|css|mp3|ogg|swf|mpe?g|avi|zip|gz|bz2?|rar)$ {                        root /путь/до/файлов/сайта; access_log /home/httpd-logs/домен.access.log; error_page 404 = @fallback; }                location / { proxy_pass http://IP_сайта:8080; proxy_redirect http://$host:8080/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; }                location @fallback { proxy_pass http://IP_сайта:8080; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; }
 * 1) document_root

}        server {    #настраиваем домен по-умолчанию. listen      IP_сайта:443 default; ssl                 on; ssl_protocols       SSLv3 TLSv1; ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5; ssl_certificate     /home/httpd-cert/домен.crt; ssl_certificate_key /home/httpd-cert/домен.key; ssl_session_cache   shared:SSL:10m; ssl_session_timeout 20m;

location / { proxy_pass http://IP_сайта:8080/; proxy_redirect http://$host:8080/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; }       }


 * рестартуем apache и nginx (как написано выше).

Примечание! https-запросах всегда будет отдаваться сертификат для виртуального хоста, прописанного выше других в конфиге для указанного IP. Такова особенность работы https)) осуществляться только между клиентом и фронтендом (nginx). Между фронтендом (nginx) и бэкендом (apache) никакого шифрование нет и не нужно! nginx он не сможет (просто не умеет). Поэтому для таких случаев предлагается перенести ispmanager на любой другой незанятый порт (например, 444), добавить в конфигурационный файл apache строки Listen 444 и хотя бы одну секцию виртхоста с настроенным ssl (также на 444 порту) после чего к ispmanager можно будет обратиться по ссылке https://IP_сайта:444/manager
 * Если несколько виртуальных хостов работают на одном IP адресе, то при
 * После настройки nginx на обработку https-запросов, шифрование будет
 * Если у клиента на сервере установлен ispmanager, то работать через

Кэширование отдачи динамических скриптов
(фрагменты конфига)

в секцию http:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=all:64m;

в секцию server: proxy_cache_key "$request_method|$host|$request_uri";

и в самое начало секции server: location ~* ^/image.php.* { proxy_pass http://89.108.125.150:8080; proxy_redirect http://$host:8080/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_cache            all; proxy_cache_valid      200 301 302 304 15m; proxy_hide_header      "Set-Cookie"; proxy_ignore_headers   "Cache-Control" "Expires"; access_log /var/www/httpd-logs/cddiski.ru_cached.access.log; }

Еще вариант
 user www-data www-data;

worker_processes 6; error_log /var/log/nginx/error.log;

events { worker_connections 1024; }

http { include      mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; keepalive_timeout 2m; sendfile on; tcp_nopush on; tcp_nodelay on; gzip on; gzip_min_length 1000; gzip_buffers 16 8k; gzip_types text/plain text/css text/xml application/x-javascript application/xml application/xhtml+xml;

upstream backend { server 127.0.0.1:88; }

server { include blockips.conf; listen      80; server_name reaa.ru www.reaa.ru; client_max_body_size 101M; location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js)$ { root /srv/www/reaa.ru/htdocs/; }    } } 