# cd /opt/src/ && wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.5.tar.gz http://maloletka.ru/patches/rpaf-0.5.patch # tar xvf mod_rpaf-0.5.tar.gz # cd mod_rpaf-0.5 && cat ../rpaf-0.5.patch | patch -p0 mod_rpaf-2.0.c # less README и ставим модуль
nginx:user nobody nogroup;
worker_processes 4;
error_log /var/log/nginx/error_log info;
events {
worker_connections 8192;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main
'$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
client_header_timeout 10m;
client_body_timeout 10m;
send_timeout 10m;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 4 2k;
request_pool_size 4k;
gzip off;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;
output_buffers 1 32k;
postpone_output 1460;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 75 20;
ignore_invalid_headers on;
index index.html;
server {
listen 80;
server_name domain.com www.domain;
root /home/clients/vasiliy_pupkinson/domains/domain.com/html;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
location ~* ^.+.(jpg|gif|png|avi|mpg|zip|exe)$ {
root /home/clients/vasiliy_pupkinson/domains/domain.com/html;
valid_referers none blocked server_names;
if ($invalid_referer) {
return 403;
}
}
}
}
apache:LoadModule rpaf_module libexec/mod_rpaf.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 APACHE_IPS
Listen 127.0.0.1:8080
ServerName localhost
NameVirtualHost 127.0.0.1:8080
<VirtualHost 127.0.0.1:8080>
ServerName domain.com
ServerAlias domain.com
ServerAlias www.domain.com
DocumentRoot /home/clients/vasiliy_pupkin/domains/domain.com/html
CustomLog /home/clients/vasiliy_pupkin/domains/domain.com/logs/access_log combined
ErrorLog /home/clients/vasiliy_pupkin/domains/domain.com/logs/error_log
ScriptAlias /cgi-bin/ " /home/clients/vasiliy_pupkin/domains/domain.com/html/cgi-bin/ "
<Directory "/cgi-bin/">
Options None +FollowSymLinks
</Directory>
<Directory />
Options All -Indexes
AllowOverride All
</Directory>
</VirtualHost>
В итоге имеем:
nginx на 80 порту ловит все входящие соединения и отдает юзеру все файлы, что попадают под регексп. Я туда еще добавил хотлинк-протект для пущего гламуру.
В регексп успешно можно пихать html, css и т.п.
Все, что не попадает под паттерн, передается apache, который слушает на 127.0.0.1:8080.
Без модуля mod_rpaf апач в логи будет писать src ip 127.0.0.1, так что ставим его обязательно.
Основной недостаток - это необходимость переписывать правила из .htaccess под nginx, что, в принципе, не очень сложно.
А простой redirect и так должен работать.