다음과 같이 정규 표현식이 일치하는 nginx 서버 정의가 있습니다.
server_name ~^(?<vhost>[a-z0-9-]+)\.example\.com$;
root /var/www/example/$vhost;
access_log /var/log/nginx/$vhost.example-access.log;
그러나이 도메인은 fastcgi 및 PHP-FPM을 사용하여 다양한 PHP 프로젝트를 호스팅하며 $_SERVER
다음 과 같은 값을받습니다 .
SERVER_NAME => "~^(?<vhost>[a-z0-9-]+)\.example\.com$"
HTTP_HOST => "myhost.example.com"
보시다시피 정규 표현식 패턴은 SERVER_NAME
일치하는 문자열이 아니라 삽입됩니다 . 그것은 나에게 약간 버그가있는 것처럼 보이고 불필요한 세부 정보를 드러내는 보안 위험을 나타냅니다 (다른 구성에서는 와일드 카드가 아닌 특정 이름 집합과 일치합니다).
"SERVER_NAME 대신 HTTP_HOST 사용"이라고 말할 수도 있습니다. 그렇게 단순하다면 SERVER_NAME에 서버 이름이 포함될 것으로 예상되는 라이브러리가 있습니다. 나는이 행동에 대한 좋은 사용 사례를 실제로 볼 수 없습니다.
curl --header "HOST: google.com" http://yourdomain/yourpage.php
및 yourpage.php 넣어에서 :<?php echo $_SERVER['SERVER_NAME']; ?>
당신은 google.com 볼