나는 웹사이트를 가지고 있는데, 그것을 example.com이라고 부르겠습니다. 이제 URL을 얻었습니다.http://www.example.com, DNS 주소는 10.0.1.1(:80)이며 내 네트워크의 192.168.0.14로 포트 전달됩니다.
나도 홈페이지 갖고싶다http://edu.example.com다른 서버에서 호스팅되지만 라우터가 하나뿐이므로 IP 주소도 하나입니다.
Apache 구성 파일에서 VirtualHost를 사용해 보았으나 다른 장치의 디렉터리를 지정할 수 없습니다.
답변1
이를 수행하려면 Apache에 대한 프록시 지시문을 설정해야 합니다. Apache에서 ProxyPass 지시문을 확인하세요.모드 에이전트특정 정보를 볼 수 있는 페이지입니다.
답변2
이 작업을 수행하려면 반드시 Nginx 역방향 프록시를 사용하겠습니다.
nginx를 Apache 서버와 동일한 시스템에 배치하고 URL을 기반으로 요청을 보조 서버로 리디렉션하도록 구성할 수 있습니다.
이 예에서 Apache는 (이전에) 포트 8080에서 example.com을 제공하도록 구성되었으며 edu.example.com은 xxx100:80에서 제공되었습니다.
server {
server_name example.com;
# app1 reverse proxy follow
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
server {
server_name edu.example.com;
# app2 reverse proxy settings follow
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://x.x.x.100:80;
}
액세스 및 오류 로그에 대한 정의를 사용하여 이 예제를 확장할 수 있습니다.
이 설정이 제공하는 또 다른 큰 이점은 SSL/TLS 오프로딩입니다. Apache 백엔드가 순수 http 서비스를 제공하고 nginx가 SSL/TLS가 활성화된 https 서비스를 제공하도록 할 수 있으므로 인증서를 하나의 서버에 보관할 수 있으므로 인증서를 더 쉽게 얻을 수 있습니다. 그리고 더 깔끔해요. 유지하다.