Назад | Перейти на главную страницу

Веб-сервер за NAT, выдающий 403

У меня есть веб-сервер, обслуживающий страницы с локального IP-адреса.

Он находится за NAT, который правильно настроил переадресацию портов для 80 и 443 (проверено путем указания на другой локальный веб-сервер).

При попытке доступа с публичного адреса я получаю 403, в то же время все доступно из локальной сети.

Веб-сервер - это apache.

В каком порядке нужно проверять?

РЕДАКТИРОВАТЬ: Спасибо всем за ответы. Проблема решена.

Я проверил журнал доступа к apache (там упоминается 403), но это не дало мне никакой подсказки. В тот момент мне в основном было интересно, какой ответ дает apache или webapp (drupal). После тройной проверки конфигурации apache я также более тщательно проверил веб-приложение и обнаружил, что нелокальные IP-адреса запрещены.

РЕДАКТИРОВАТЬ 2: Если кто-то предоставит хороший ответ (или расширит существующий) о том, что было бы правильным способом определить, был ли это apache или webapp, я приму его как ответ.

Что говорит журнал ошибок apache? это должно дать вам ключ к разгадке.

Лучшее предположение - дважды проверьте конфигурацию своего веб-сервера - разрешаете ли вы доступ с «любого»? Там может быть правило, разрешающее только локальную подсеть.

Вы используете виртуальные хосты на основе имен в своей конфигурации apache? Как вы подключаетесь из локальной сети и через NAT-маршрутизатор? Если у вас есть виртуальный хостинг на основе имени, заголовок Host в HTTP-запросе определяет, какой виртуальный хост обслуживает запрос. Так, например, если у меня есть что-то вроде:

<VirtualHost *:80>
  ServerName my.internal.hostname
  .....
</VirtualHost>

<VirtualHost *:80>
  ServerName some.other.hostname
  ...
</VirtualHost>

И я подключаюсь к внешнему маршрутизатору с http: //my.nat.router/, Я могу оказаться на последнем указанном мной виртуальном хосте. Если он настроен на DocumentRoot, у которого нет разрешений, я получаю 403.

Другая возможность может заключаться в том, что у вас указан DocumentRoot, а затем директива Directory, которая не имеет «разрешить от всех», а только что-то вроде «разрешить от 192.168.0.0/24».

403 - доступ запрещен. Вы разрешаете анонимный доступ к apache?