Обратный прокси на 127.0.0.1 работает локально, но не по сети

Обратный прокси на 127.0.0.1 работает локально, но не по сети

Два веб-сервера, привязанные к 127.0.0.1:8080 и 127.0.0.1:8081. Curl проверяет, что они работают так, как и ожидалось.

Apache со следующими хостами:

Host 192.168.1.1:80

<VirtualHost 192.168.1.1:80>
  ServerAdmin [email protected]
  ProxyPass             /       http://127.0.0.1:8080/
  ProxyPassReverse      /       http://127.0.0.1:8080/
  ServerName 192.168.1.1
  ServerAlias http://192.168.1.1
</VirtualHost>

Host 192.168.1.2:80

<VirtualHost 192.168.1.2:80>
  ServerAdmin [email protected]
  ProxyPass             /       http://127.0.0.1:8081/
  ProxyPassReverse      /       http://127.0.0.1:8081/
  ServerName 192.168.1.2
  ServerAlias http://192.168.1.2
</VirtualHost>

На сервере я могу подключиться к хостам с помощью curl и получить соответствующий ответ. (curl 192.168.1.1 возвращает мне ответ веб-сервера от localhost:8080)

Удаленные хосты вообще не могут подключиться к 192.168.1.1 или .2. Что я упускаю?

Re: комментарии

Да, директива каталога по умолчанию все еще действует.

# Deny access to root file system
<Directory />
        Options None
        AllowOverride None
        Order Deny,Allow
        deny from all
</Directory>

При попытке удаленного доступа к 192.168.1.1 не генерируются логи Apache. Они генерируются при curl из локальной сети.

Если я привяжу веб-серверы к *:8080 и *:8081 вместо привязки к localhost, я смогу получить к ним доступ с удаленного хоста через 192.168.1.1 и 192.168.1.2.

Редактировать 2:

подробный вывод curl: (аналогично для второго веб-сервера и для 127.0.0.1:portnum)

[user@host mingle_12_2_1]$ curl -v 192.168.1.1
* About to connect() to 192.168.1.1 port 80
*   Trying 192.168.1.1... connected
* Connected to 192.168.1.1 (192.168.1.1) port 80
> GET / HTTP/1.1
> User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
> Host: 192.168.1.1
> Accept: */*
>
< HTTP/1.1 302 Found
< Date: Tue, 16 Oct 2012 16:22:08 GMT
< Server: Jetty(6.1.19)
< Cache-Control: no-cache
< Location: http://192.168.1.1/install
< X-Runtime: 130
< Content-Type: text/html; charset=utf-8
< Content-Length: 94
< Connection: close
Closing connection #0
<html><body>You are being <a href="http://192.168.1.1/install">redirected</a>.</body></html>

журнал из запроса локальный

192.168.1.1 - - [16/Oct/2012:12:22:08 -0400] "GET / HTTP/1.1" 302 94

при запросах от удаленных клиентов не создается журнал доступа Apache или журнал ошибок.

Редактировать 3

curl и логи на обоих хостах идентичны, за исключением используемого IP-адреса. Работаем с администраторами безопасности, чтобы получить заблокированные правила для получения дополнительной информации.

решение1

Поскольку настройка proxypass работает исключительно в (виртуальном) пространстве URL, вам необходимо предоставить доступ к каждому виртуальному хосту с помощью директивы Location:

<VirtualHost 192.168.1.1:80>
  ServerAdmin [email protected]
  ProxyPass / http://127.0.0.1:8080/
  ProxyPassReverse / http://127.0.0.1:8080/
  ServerName 192.168.1.1
  <Location />
    Order allow,deny
    Allow from All
  </Location>
</VirtualHost>

Также избавьтесь от NameVirtualHosts, если вы их не используете, а ServerName должно быть именем хоста, нет никакой схемы или порта или чего-то еще. Просто имя хоста.

решение2

Можете ли вы предоставить:

  • синтаксис/вывод curl (использовать подробный)
  • логи от apache
  • вывод ifconfig
  • кот /etc/hosts
  • набор правил брандмауэра
  • Включить/отключить SELinux?

* ОБНОВЛЯТЬ *

также ServerAliasвам следует удалить http://часть, так как она не нужна, не говоря уже о том, что поскольку ваша ServerNameтакая же, как ServerAlias, ServerAliasона просто не нужна.

Связанный контент