Модуль rewrite (заглушка):
#nano /etc/nginx/conf.d/default.confserver {
listen 80;
location / {
rewrite ^.*$ /maintance.html;
}
location /maintance.html {
alias /var/www/html/maintance.html;
expires -1;
}
}
or:
server {
listen 192.168.1.107:80;
server_name localhost;
location / {
root /usr/local/www/nginx;
index index.html index.htm;
}
rewrite ^/(.*) http://192.168.1.80 redirect;
return 403;
}
Перенаправление запросов на порт - заглушку.
iptables -t nat -A PREROUTING -i eth1 -p tcp --destination-port 80 -j REDIRECT --to-port 8088
iptables -t nat -A PREROUTING -i eth1 -p tcp --destination-port 443 -j REDIRECT --to-port 8088
p.s......
#Debtors forwarding
/sbin/iptables -I FORWARD -o eth1 -p udp --dport 53 -d 8.8.8.8 -j ACCEPT #разрешаем ходить на DNS
#создаем таблички в ipset
/usr/local/sbin/ipset -F DEBTORS
/usr/local/sbin/ipset -X DEBTORS
/usr/local/sbin/ipset -N DEBTORS ipmap --network 172.16.0.0/24 #Тут возможно у Вас своя подсеть
/sbin/iptables -t nat -I PREROUTING -m set --set DEBTORS src -p tcp -d ! 172.16.0.0/24 --dport 80 -j DNAT --to-destination 172.16.0.1:85 #у меня виртуалхост висит на 85 порту
nginx как front-end к apache:
Вешаем apache на порт 8080 (или на другой, кроме 80)
Вносим изменения в конфигурацию апача:
/etc/apache2/ports.conf
NameVirtualHost *:8080
Listen 8080
Вносим изменения в конфигурацию апача:
/etc/apache2/ports.conf
NameVirtualHost *:8080
Listen 8080
Если есть виртуальные хосты, то их тоже нужно повесить на порт 8080
Настраиваем nginx
Создаем файл конфигурации в директории: /etc/nginx/sites-available
server {
listen *:80; ## listen for ipv4
server_name ВАШ_ДОМЕН;
access_log /var/log/nginx/access.log;
Настраиваем nginx
Создаем файл конфигурации в директории: /etc/nginx/sites-available
server {
listen *:80; ## listen for ipv4
server_name ВАШ_ДОМЕН;
access_log /var/log/nginx/access.log;
# Перенаправление на back-end
location / {
proxy_pass ВАШ_ДОМЕН:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}
# Статическиое наполнение отдает сам nginx
# back-end этим заниматься не должен
location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|html|txt)$ {
root ПУТЬ_ДО_КОРНЕВОГО_КАТАЛОГА_САЙТА;
}
}
location / {
proxy_pass ВАШ_ДОМЕН:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}
# Статическиое наполнение отдает сам nginx
# back-end этим заниматься не должен
location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js|html|txt)$ {
root ПУТЬ_ДО_КОРНЕВОГО_КАТАЛОГА_САЙТА;
}
}
Балансировка запросов на Apache (2е ноды) Nginx:
# nano /etc/nginx/conf.d/all.conf
upstream webservers {
# Перечисляем все backend между которыми nginx будет балансировать клиентов, говорим количество fail для баны backend ноды и таймаут
server 192.168.1.81:8080 weight=10 max_fails=60 fail_timeout=2s;
server 192.168.1.82:8080 weight=10 max_fails=60 fail_timeout=2s;
}
server {
listen 192.168.1.80:80;
server_name balanser.xxx.com.ua www.balanser.xxx.com.ua
reset_timedout_connection on; #заставляет nginx принудительно закрывать соединения в состоянии ожидания по истечению таймаута.
location / {
proxy_pass http://webservers;
proxy_next_upstream error timeout invalid_header http_500 http_503; #указывает модулю проксирования, что надо переходить к следующему бекэнду в случае возникно$
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_redirect off; #запрещает выполнять редирект
proxy_connect_timeout 30; #описывает время ожидания ответа от бекэнда.
}
}
Nginx.conf с описаниями:
# cat /etc/nginx/nginx.conf
user nginx;
# Количество процессов ожидаюищих соединения
worker_processes 10;
# Максимум коннектов worker_proces`s*worker_connect`s
worker_rlimit_nofile 30000;
pid /var/run/nginx.pid;
events {
# Максимальное количество обслуживаемых клиентов онлайн
worker_connections 1024;
# epoll — эффективный метод, используемый в Linux 2.6+ http://nginx.org/ru/docs/events.html
use epoll;
# Рабочий процесс за один раз будет принимать сразу все новые соединения
multi_accept on;
}
error_log /var/log/nginx/error.log warn;
http {
include /etc/nginx/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;
connection_pool_size 256;
client_header_buffer_size 4k;
client_max_body_size 100m;
large_client_header_buffers 8 8k;
request_pool_size 4k;
output_buffers 1 32k;
postpone_output 1460;
# Все страницы будут ужиматься gzip
gzip on;
gzip_min_length 1024;
gzip_proxied any;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/xml application/xml application/x-javascript text/javascript text/css text/json;
gzip_comp_level 5;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 75 20;
server_names_hash_max_size 8192;
ignore_invalid_headers on;
server_name_in_redirect off;
proxy_buffer_size 8k;
proxy_buffers 8 64k;
proxy_connect_timeout 1000;
proxy_read_timeout 12000;
proxy_send_timeout 12000;
# Мы рассказываем где будет храниться кеш, но по умолчанию я его не использую
proxy_cache_path /var/cache/nginx levels=2 keys_zone=pagecache:5m inactive=10m max_size=50m;
# Передаем backend реальный адрес клиента для mod_rpaf
real_ip_header X-Real-IP;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
allow all;
include /etc/nginx/conf.d/*.conf;
}