서버 상태 지시문을 방지하는 가상 호스트

서버 상태 지시문을 방지하는 가상 호스트

내 Ubuntu 16.4 VM에서는 Apache 2.4를 성공적으로 설정했으며 여러 가상 호스트가 설정되었습니다. 서버 상태를 보고 싶은데 첫 번째 가상 호스트가 계속해서 이를 방지하고 있습니다. 나는 이것에 대한 Apache 2.4 문서를 읽고 또 읽었습니다. /etc/apache2/apache.conf에 다음을 넣은 다음 /etc/apache2/mods-enabled/status.conf에, 마지막으로 /etc/apache2/sites-enabled/0firstvhost.conf에 넣었습니다.

<Location "/server-status">
      SetHandler server-status
      Require ip 10.211.55.0/24
    </Location>

Apache 문서 및 ServerFault에서 이 주제에 대한 많은 게시물을 읽으면서 Apache 2.4에 적용할 수 있는 다양한 변형을 시도했습니다.

mod_status가 실행 중인지 확인하면 실행될 수 있습니다.

sudo apachectl -M | grep status

물론, 매번 apachectl configtest를 확인하고 apache2 서비스를 다시 시작하여 10.211.55.3/server-status로 이동할 수 있는지 확인했지만 Drupal PHP 앱이 계속 방해합니다. 이 가상 호스트의 루트에는 .htaccess가 없습니다.

나는 이 지시문을 지시문 안팎에 두었습니다.

VM의 IP 추가 및 VM 실행 내에서 브라우저를 확인합니다.

curl localhost/server-status
curl 10.211.55.3/server-status

Drupal 앱이 먼저 읽혀집니다. 다음에 무엇을 시도할까요? 고마워, 샘

답변1

제안한 이것을 찾았습니다.기본 사이트의 .htaccess가 mod_status를 방해했습니다.일부터. 그들의 솔루션은 저에게 효과적이지 않았지만 어쨌든 저는 가상 호스트로 작업하고 있기 때문에 .htaccess 없이 가상 호스트를 만들 수 있었습니다. 데비안의 /etc/hosts 파일에 임의의 호스트를 추가했습니다:

127.0.0.1  foo.org

다른 가상 호스트 사이에 빈 디렉토리를 만들고 새 사이트를 만들어 활성화했습니다.

<Directory /home/foo.org>
</Directory>
<Location /server-status>
    SetHandler server-status
    Require local
    Require ip 127.0.0.1
    Require ip ::1
</Location>

<VirtualHost *:80>
  ServerAdmin [email protected]
  ServerName foo.org
</VirtualHost>

그래서 localhost에서 데이터를 볼 수 있습니다

curl foo.org/server-status

답변2

나 역시 내 문제가 있었다가상호스트 /etc/sites-enabled/example.conf실제로 처리하고 싶었던 http://localhost/server-info에 대한 요청 처리mod_info.

# File /etc/sites-enabled/example.conf
<VirtualHost *:80>
  ServerName example.com
  
  # ...
</VirtualHost>

문제는 일부 요청이 구성된 요청과 일치하지 않는 경우 Apache에 기본 대체 요청 처리 동작이 있다는 IMHO였습니다.가상호스트'에스서버 이름(보다1,2). 처럼mod_info의 기본 구성 파일 /etc/apache2/mods-available/info.load이며 /etc/apache2/mods-available/info.conf자체 구성 파일을 지정하지 않습니다.가상호스트그리고서버 이름, 내 생각엔 Apache의 폴백이 시작된 것 같습니다.example.conf 가상호스트http://localhost/server-info에 대한 요청을 처리합니다.

다음과 같은 방법으로 문제를 해결했습니다.

파일 생성 /etc/apache2/mods-available/localhost-server-info.load(알아채다mods-available). 이것은복사원본 info.load:

LoadModule info_module /usr/lib/apache2/modules/mod_info.so

파일 생성 /etc/apache2/sites-available/localhost-server-info.conf(알아채다sites-available). 이는 원본을 각색한 것으로 info.conf, 콘텐츠를가상호스트그리고서버 이름:

# Get mod_info information by requesting http://localhost/server-info
#
# Enable by executing
# service apache2 stop
# a2dismod info
# a2enmod localhost-server-info
# a2ensite localhost-server-info
# service apache2 start
#
# Disable by executing
# service apache2 stop
# a2dissite localhost-server-info
# a2dismod localhost-server-info
# service apache2 start

<IfModule mod_info.c>
  <VirtualHost *:80>
    # Adapt ServerName to your needs
    # Avoid ServerName collision with any other active VirtualHosts
    ServerName localhost

    <Location /server-info>
      SetHandler server-info
      # Adapt Require to your needs
      # Require local
      # Require ip 192.0.2.0/24
    </Location>
  </virtualHost>
</IfModule>

원본 비활성화정보모듈(아직 활성화되어 있는 경우)을 선택하고 새 모듈을 활성화합니다.로컬호스트-서버-정보기준 치수그리고대지:

service apache2 stop
a2dismod info
a2enmod localhost-server-info
a2ensite localhost-server-info
service apache2 start
  • http://example.com/server-info이제 다음 부서에서 처리해야 합니다.example.comVirtualHost(아마도 404 페이지 표시).
  • http://localhost/server-info는 이제 다음에서 처리해야 합니다.mod_info.
  • http://127.0.0.1/서버-정보기타 구성되지 않은서버 이름s는 Apache의 폴백 처리에 따라 처리되어야 합니다. 예를 들어 내 예에서는example.comVirtualHost(아마도 404 페이지 표시).

관련 정보