Моя конфигурация очень проста:
Чтобы избежать дублирования контента, я хочу запретить пользователю заходить на мой веб-сайт, напрямую нажимая apache (который работает на порту 8080).
Я настроил сервер Varnish, прослушивающий порт 80, поэтому я хочу использовать только его, чтобы бот не индексировал один и тот же веб-сайт на другом порту, что может вызвать проблему с дублированием контента.
Я использую выделенный сервер с Debian 6.
Мой виртуальный хост выглядит так:
<VirtualHost *:8080>
ServerAdmin webmaster@localhost
ServerName www.seek-team.com
DocumentRoot ...
DirectoryIndex app.php
<Directory "/var/www/seek-team.com/current/web">
Options -Indexes FollowSymLinks SymLinksifOwnerMatch
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
Как запретить пользователю прямой доступ к сайту через порт 8080? (но мне все еще нужен лак, чтобы правильно ударить apache).
Спасибо.
Вы можете привязать демон apache к интерфейсу обратной связи и заставить Varnish подключаться к localhost:80
. Таким образом, лак будет доступен миру, в то время как apache будет доступен только локально.
Конфигурация лака:
backend www {
.host = “localhost″;
.port = “80″;
}
Конфигурация Apache:
Listen 127.0.0.1:8080
...
<VirtualHost 127.0.0.1:8080>
...
Просто заблокируйте порт 8080 с помощью iptables для внешнего мира следующим образом:
# iptables -I INPUT -p tcp --dport 80 -j DROP
# iptables -I INPUT -s localhost -j ACCEPT
Самый быстрый вариант - просто привязать экземпляр Apache к Localhost, чтобы он был доступен только с этого компьютера.
<VirtualHost 127.0.0.1:8080>
В качестве альтернативы вы можете настроить разрешения вашего блока каталога виртуального хоста Apache, чтобы:
Deny from all
Allow from 127.0.0.1 #IP.OF.MY.PC
Это немного более гибко, так как вы можете добавить свой собственный IP-адрес или диапазон сети в список разрешенных IP-адресов, чтобы позволить нескольким избранным прямой доступ для диагностических целей.
Оба варианта выше предполагают, что экземпляр Varnish работает на одном физическом сервере.