[server] 하위 도메인을 동일한 서버의 다른 포트로 리디렉션하려면 어떻게합니까?

동일한 서버의 특정 포트로 리디렉션하려는 하위 도메인이 있습니다. 내가 가지고 있다고

dev.mydomain.com

내가 원하는 dev.mydomain.com투명로 리디렉션 mydomain.com:8080나는 원래 하위 도메인 이름을 브라우저의 URL을 보존하려는.

Apache 2.2에서이 작업을 어떻게 수행합니까? 기본 포트에서 Apache 2.2를 실행하고 80있습니다. 이 작업을 수행하기 위해 쓰기 구성을 파악할 수 없습니다.

이미 dev.mydomain.comDNS에서를 해결하도록 설정했습니다 mydomain.com.

이것은 라우팅 할 수없는 IP 주소를 가진 인트라넷 개발 서버를위한 것이므로 공개적으로 직면하는 서버를 손상시키는 악용 및 보안에 대해서는 걱정하지 않습니다.



답변

해결책

Miles Erickson이 올바른 방향으로 설정 한 후 마침내 생각해 냈습니다. 주소 표시 줄에 리디렉션 된 서버와 포트가 아닌 요청의 원래 하위 도메인 / 도메인을 반영하기를 원했지만 그는 나를 사용하여 솔루션을 제공하는 올바른 경로를 VirtualHost찾았으며 마침내의 사용을 포함하는 솔루션을 찾았습니다 mod_proxy.

<VirtualHost *:80>
    ServerAdmin me@mydomain.com
    ServerName dev.mydomain.com
    ProxyPreserveHost On

    # setup the proxy
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:8888/
    ProxyPassReverse / http://localhost:8888/
</VirtualHost>


답변

dev.mydomain.com을 mydomain.com의 IP로 확인할 수 있다고 가정하면 httpd.conf에 다음을 추가 할 수 있습니다.

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName dev.mydomain.com
    redirect / http://mydomain.com:8080/
</VirtualHost>

관련 아파치 문서 :

  1. 이름 기반 가상 호스트 생성 가이드
  2. VirtualHostNameVirtualHost를 포함한 핵심
  3. 리디렉션

관련 질문 :
호스트 이름을 기반으로하는 Apache 리디렉션

(참고 :이 답변의 원래 버전은 @ChrisS가 지적했듯이 URL의 도메인 부분을 구문 분석 할 수없는 RedirectMatch의 사용을 잘못 제안했습니다.)


답변

터미널에서 다음 줄을 실행하십시오 (도메인 및 하위 도메인 이름을 올바르게 지정하십시오)

sudo nano /etc/apache2/sites-available/subdomain.example.com.conf

다음 코드를 붙여 넣고 요구 사항으로 변경하십시오.

<VirtualHost *:80>
        ServerAdmin admin@example.com
        ServerName subdomain.example.com
        ServerAlias subdomain.example.com
        ProxyRequests Off

        #ProxyPass / http://localhost:8080/
        <Location />
                ProxyPreserveHost On
                ProxyPass http://example.com:8080/
                ProxyPassReverse http://example.com:8080/
        </Location>
     # Uncomment the line below if your site uses SSL.
     #SSLProxyEngine On
</VirtualHost>

터미널에서 다음 행을 실행하십시오 (도메인 및 서브 도메인 이름을 올바르게 지정하십시오)

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2ensite subdomain.example.com.conf
sudo service apache2 restart


답변

기본 vhost 구성에 다음 줄을 추가하십시오.

ProxyPreserveHost On
ProxyPass / http://example.com:8080/
ProxyPassReverse / http://example:8080/

여기에는 Apache에서 mod_proxy가 필요합니다.


답변

당신은 mod_rewrite를 찾고 있습니다. 다음기본고급 구성에 대한 많은 예를 포함 하는 Apache 설명서에 대한 링크입니다 .

설명서를 직접 해석 할 수없는 경우 httpd.conf에 추가하십시오.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^dev\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com:8080$1 [R=301]

그리고 이것이 분명한 예가 아니라면, 여기 mod_rewrite 초보자 가이드 링크 도 있습니다.


답변