서버 가상 머신(VM1, VM2)을 호스팅하기 위해 ESXi(s1)를 사용한다는 점을 제외하면 일반적인 다중 서버1 IP 문제가 있습니다. 내가 달성하고 싶은 것은 다음과 같습니다
누군가가 갔을 때example.com그들은 얻는다S1-VM1내 블로그, 웹 사이트 및 모든 재즈를 호스팅합니다.
하지만 그들이 갈 때code.example.com그들은 얻는다S1-VM2내 코드의 인기 있는 gitlab만 호스팅합니다.
변하기 쉬운:
- VM1은 CentOS를 기반으로 하고 VM2는 Ubuntu 서버를 기반으로 합니다.
- 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
.