code.domain.com을 특정 서버로 전달하시겠습니까?

code.domain.com을 특정 서버로 전달하시겠습니까?

서버 가상 머신(VM1, VM2)을 호스팅하기 위해 ESXi(s1)를 사용한다는 점을 제외하면 일반적인 다중 서버1 IP 문제가 있습니다. 내가 달성하고 싶은 것은 다음과 같습니다

누군가가 갔을 때example.com그들은 얻는다S1-VM1내 블로그, 웹 사이트 및 모든 재즈를 호스팅합니다.

하지만 그들이 갈 때code.example.com그들은 얻는다S1-VM2내 코드의 인기 있는 gitlab만 호스팅합니다.

변하기 쉬운:

  1. VM1은 CentOS를 기반으로 하고 VM2는 Ubuntu 서버를 기반으로 합니다.
  2. Ext IP를 사용하는 라우터가 DHCP를 처리하고 있습니다.

이와 같은 작업을 어디서 시작해야 할지 완전히 확신할 수 없으므로 이 작업을 어디에서 읽고/가거나/시작할 수 있는지 알려주십시오. 이것이 CentOS의 역방향 프록시 Apache 구현만큼 간단할 수 있습니까? 아마도 다음과 같은 것이것?

고쳐 쓰다: 그래서 부분적으로 알아냈습니다. 다음 구성은 example.com에서 모든 트래픽을 리디렉션하는 것으로 보입니다 https://sub.example.com. 휴일이고 서버를 가지고 놀 수 있는 시간이 많기 때문에 누군가 자세히 살펴보고 왜 이런 일이 발생하는지 피드백을 주고 조정을 제안해 준다면 기쁠 것입니다.

<VirtualHost 192.0.2.1:80>
  ServerName sub.example.com
  Redirect permanent / http://sub.example.com/
</VirtualHost>
<VirtualHost 192.0.2.1:443>
  ServerName sub.example.com
  ErrorLog logs/sub.example.com-error_log
  CustomLog logs/sub.example.com-access_log combined
  SSLEngine On
  SSLCertificateFile /etc/httpd/conf.d/ssl/server.crt
  SSLCertificateKeyFile /etc/httpd/conf.d/ssl/server.key
  #SSLCACertificateFile /etc/httpd/conf.d/ssl/rapidssl.crt
  ProxyRequests Off
  ProxyPreserveHost On
  ProxyPass / http://192.168.1.252/
  ProxyPassReverse / http://192.168.1.252/
</VirtualHost>

**업데이트 2:** 현재 발생하는 오류는 SSL과 관련이 있습니다. 위의 구성을 다음과 같이 수정했습니다.

<VirtualHost 192.0.2.1:80>
  ServerName sub.example.com
  Redirect permanent / http://sub.example.com/
  ProxyPass / http://192.168.1.252
  ProxyPassReverse / http://192.168.1.252
</VirtualHost>
<VirtualHost 192.168.1.252:443>
  ServerName sub.example.com
  ErrorLog logs/sub.example.com-error_log
  CustomLog logs/sub.example.com-access_log combined
  SSLEngine off
  SSLCertificateFile /etc/httpd/conf.d/ssl/server.crt
  SSLCertificateKeyFile /etc/httpd/conf.d/ssl/server.key
  #SSLCACertificateFile /etc/httpd/conf.d/ssl/rapidssl.crt
  ProxyRequests Off
  ProxyPreserveHost On
  ProxyPass / http://192.168.1.252/
  ProxyPassReverse / http://192.168.1.252/
</VirtualHost>

나는 아무것도 지정하지 않았거나 일치하는 RSA 키나 아무것도 지정하지 않은 로그의 직감을 기반으로 이 작업을 수행했습니다. 위의 구성을 사용하면 공개 서버가 요청을 sub.example.com내부 서버 HTTP 웹 사이트로 리디렉션합니다. 하지만 이제 예를 들어 프록시 오류와 같은 작업을 수행하면 example.com/blog다른 모든 항목이 작동합니다.

Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /blog.

Reason: DNS lookup failure for: 192.168.1.252blog 

어떤 아이디어가 있나요?

답변1

따라서 이를 위해서는 역방향 프록시를 사용해야 합니다. 역방향 프록시를 사용하면 하나의 외부 IP 뒤에 있는 여러 서버에 액세스할 수 있습니다. 호스트가 이고 code값이 로 CNAME 레코드가 올바르게 설정되었는지 확인하세요 example.com.

나는 팔로우한다이것부츠, 느슨해. 내 운영 체제는 CentOS 7.1입니다.

먼저 Apache/httpd가 설치되어 있는지 확인하세요. 이미 존재하는 경우 이 단계를 건너뛸 수 있습니다.

sudo yum install httpd

기본 서버에서 기본 구성을 수행한 후 다른 서버에 대한 액세스를 활성화합니다. httpd.conf리디렉션하려면 파일을 편집해야 합니다 .

vi /etc/httpd/conf/httpd.conf

실제로 작동하려면 다음을 추가하세요.

<VirtualHost *:80>
        ServerName code.example.com
        ProxyPass / http://S1-VM2:80/
        ProxyPassReverse / http://S1-VM2:80/
</VirtualHost>

그런 다음 Apache 서비스를 다시 시작해야 합니다.service httpd restart

마지막으로 Ubuntu 웹 서버를 설정해야 합니다. ServerName입력을 위해 /etc/apache2/sites-available/default다음 code.example.com을 실행하여 웹 서버를 다시 시작합니다 service apache2 restart.

관련 정보