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 192.168.1.1은 localhost:8080의 웹 서버 응답을 제공합니다)

원격 호스트는 192.168.1.1 또는 .2에 전혀 연결할 수 없습니다. 내가 무엇을 놓치고 있나요?

답장: 댓글

예, 기본 디렉터리 지시문은 여전히 ​​유효합니다.

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

192.168.1.1에 원격으로 연결하려고 하면 Apache 로그가 생성되지 않습니다. 로컬에서 컬할 때 생성됩니다.

웹 서버를 localhost에 바인딩하는 대신 *:8080 및 *:8081에 바인딩하면 192.168.1.1 및 192.168.1.2를 통해 원격 호스트에서 액세스할 수 있습니다.

편집 2:

컬 자세한 출력: (두 번째 웹 서버 및 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

사용된 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

다음을 제공할 수 있나요?

  • 컬 구문/출력(자세한 내용 사용)
  • 아파치의 로그
  • ifconfig 출력
  • 고양이 /etc/hosts
  • 방화벽 규칙 세트
  • SELinux 활성화/비활성화?

* 업데이트 *

또한 필요하지 않은 부분을 ServerAlias제거해야 하며 , 과 동일하기 때문에 필요하지 않다는 http://것은 말할 것도 없습니다 .ServerNameServerAliasServerAlias

관련 정보