Я установил лак на свой сервер и хотел бы протестировать конфигурацию, не влияя на нормальное использование. У меня apache прослушивает порт 80, а varnish - на порту 8080. Итак, я хочу, чтобы все запросы с моего IP-адреса a.b.c.d проходили через varnish, а всем остальным IP-адресам должен быть разрешен доступ к apache в обычном режиме.
Я где-то читал, что для этого можно использовать PREROUTING в Iptables. Подскажите, пожалуйста, как это сделать? У меня есть 2 сайта, размещенных на сервере, можно ли настроить это только для одного домена?
Обновить
Я попробовал команду, но она не сработала
root@git:~# iptables -A PREROUTING -t nat -i venet0 -p tcp -s 117.201.192.67 --dport 80 -j REDIRECT --to-port 8000
root@git:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
root@git:~# iptables -A PREROUTING -t nat -i venet0:0 -p tcp -s 117.201.192.67 --dport 80 -j REDIRECT --to-port 8000
Warning: weird character in interface `venet0:0' (No aliases, :, ! or *).
root@git:~# iptables -A PREROUTING -t nat -p tcp -s 117.201.192.67 --dport 80 -j REDIRECT --to-port 8000
root@git:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Я использую VPS, и у меня нет интерфейса с именем eth0
. /sbin/ifconfig
списки lo
, venet0
, venet0:0
, venet0:1
и venet0:2
только.
Обновление 2 - Вставка правила в начале сработала
iptables -t nat -I PREROUTING -p tcp -s 117.201.192.67 --dport 80 -j REDIRECT --to-port 8000
Можно ли также проверить запрошенное имя хоста? Я хочу перенаправлять только запросы для mydomainname.com
Вы можете указать адрес источника (или сеть) в перенаправлении iptables следующим образом:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
Правила читаются сверху вниз, и идет первое совпадение, поэтому вам, возможно, придется прикрепить его в нужном месте.