
단일 네트워크에서네트워크-1, 컴퓨터가 두 대 있습니다.ㅏ그리고비. 둘 다아파치실행 중인 서버(둘 다데비안 7). 나는 서버를 소유하고 있습니다ㅏ, 내 홈페이지가 이라고 가정해 보겠습니다 http://computerA/index.html
. 다른 사람에게 접근할 수도 있습니다(비)의 페이지가 B:8080/bspage.php
동일한 네트워크에 있습니다. 실제로 내 index.html
페이지 에는 그 사람의 페이지에 대한 링크가 다음과 같이 있습니다 .
<a href="http://B:8080/bspage.php">B-Guy's Link</a>
내가 없을 때 일을 하다가다른 네트워크, 다음을 사용하여 게이트웨이를 통해 서버를 포트 포워딩할 수 있습니다.
ssh -L 8888:A:80 gate@somegateway
따라서 이제 다음과 같이 서버 페이지를 다시 열 수 있습니다.
localhost:8888/index.html
하지만 그 링크는 B-Guy's Link
더 이상 작동하지 않습니다. (제 생각에는 분명한 이유가 있는 것 같습니다.)
나에게 필요한 것은 어떻게든지도 비http://B:8080/bspage.php
내 서버에 대한 링크ㅏ, 이 링크에 원격으로 액세스하면 B-Guy's Link
다음을 통해 액세스됩니다.ㅏ'에스아파치포트 80
및 추가 포트 포워딩 없음비필요해야합니다. 해당 로컬 네트워크에서도(네트워크-1), 나는 (내 컴퓨터에서)ㅏ):
ssh -L 9999:localhost:8080 root@B
(그런데 나는 루트 액세스 권한이 있고 B
루트는 www-data를 제외한 유일한 사용자입니다) 그러나 localhost:9999/bspage.php
내 브라우저에서는 열리지 않습니다ㅏ!! 그런 다음 사용자를 에서 로 변경해야 한다고 생각했는데 root
on 의 www-data
비밀번호를 모릅니다.www-data
비그래서 그렇게 할 수 없었습니다.
저는 이 모든 사업에 대해 매우 처음 접했기 때문에 도움을 주시면 정말 감사하겠습니다. 나는 이것이 너무 복잡해서는 안 될 것 같지만 내가 무엇을 놓치고 있는지 전혀 모릅니다!
감사합니다 -NL
업데이트 및 솔루션
다비고'에스답변많은 도움을 받았고 다음과 같은 몇 가지 튜토리얼을 진행할 수 있었습니다.이 하나여기서는 다음을 통해 이 네 가지 모듈을 활성화했습니다.
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
마지막 것은 찾을 수 없다는 오류가 나에게 발생했지만 lbmethod_byrequests
결국에는 중요하지 않았습니다.
그런 다음 다음을 사용하여 서버를 다시 시작했습니다.
service apache2 restart
그 후에는 달성하기 쉬워 보이지만 일어나지 않은 일을 달성하는 데 실패했습니다! 하지만이 기사마침내 도움이 되었지만 어쨌든 자세히 설명하겠습니다.
파일을 수정해야 했습니다.
/etc/apache2/sites-available/default
또는 심볼릭 링크:/etc/apache2/sites-enabled/000-default
블록 내부:
<VirtualHost *:80>
# blah blah some code...
</VirtualHost>
다음을 삽입했습니다.
<Location /sometag >
ProxyPass http://B:8080/
ProxyPassReverse http://B:8080/
</Location>
something
사용할 수 있는 문자열은 어디에 있습니까? 의미 있는 것을 사용하는 것이 더 좋습니다. 예를 들어 여기서는 와 같은 태그를 사용하는 것이 가장 좋습니다 bserver
. 따라서 구성 파일은 다음과 같습니다.
<VirtualHost *:80>
# blah blah some code...
<Location /bserver >
ProxyPass http://B:8080/
ProxyPassReverse http://B:8080/
</Location>
</VirtualHost>
서버를 다시 시작하세요
service apache2 restart
또 다른 작은 변화를 주어야 합니다. 귀하의 페이지에서 (어쩌면 index.html
무엇이든)서버 A당신은 링크를 다음으로 변경합니다비님의 페이지
<a href="http://B:8080/bspage.php">B-Guy's Link</a>
에게
<a href="bserver/bspage.php">B-Guy's Link</a>
태그를 주목하세요서버, 이제 끝났습니다. 지금 연결하면ㅏ그리고 포트를 포워딩하세요80외부 컴퓨터에
ssh -L 8888:A:80 gate@somegateway
당신은 메인을 열 것입니다ㅏ님의 페이지는 평소와 같습니다.
localhost:8888/index.html
하지만 이제 그걸 클릭하면비님의 링크를 클릭하면 다음 URL로 리디렉션됩니다.
localhost:8888/bserver/bspage.php
완료!
이 방법을 따르면ㅏ컴퓨터를 주( frontend
) 서버로 설정하고 그 뒤에 많은 내부( backend
) 서버가 상주하면 모든 서버에 원격으로 액세스할 수 있습니다.
답변1
문제에 대한 해결책은 여러 가지가 있습니다.
서버 A에서 B로 프록시되는 serverA에 경로나 가상 호스트를 설정하고 싶습니다. 이를 위해 Apache에서 ProxyPass 규칙을 사용합니다. (Google은 Proxypass 및 mod_proxy를 지원합니다)
또는 SSH 포트 전달을 폐기하고 이를 라우터에서 이상적으로 실행되는 OpenVPN으로 교체하고 싶습니다. 이를 올바르게 설정하면 전체 네트워크에 대한 보안 액세스가 투명하게 허용됩니다.
세 번째 옵션은 SSH 전달을 SSH 기반 SOX 프록시로 바꾸는 것입니다. (이 기능은 SSH에 내장되어 있지만 이를 사용하려면 브라우저를 구성해야 합니다.)
답변2
처음에는 솔루션으로 질문을 업데이트했지만 제안에 따라숙련공 괴짜, 나는 그것을 대답으로 바꾸겠습니다. 자, 여기 있습니다:
다비고'에스답변많은 도움을 받았고 다음과 같은 몇 가지 튜토리얼을 진행할 수 있었습니다.이 하나여기서는 다음을 통해 이 네 가지 모듈을 활성화했습니다.
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
마지막 것은 찾을 수 없다는 오류가 나에게 발생했지만 lbmethod_byrequests
결국에는 중요하지 않았습니다.
그런 다음 다음을 사용하여 서버를 다시 시작했습니다.
service apache2 restart
그 후에는 달성하기 쉬워 보이지만 일어나지 않은 일을 달성하는 데 실패했습니다! 하지만이 기사마침내 도움이 되었지만 어쨌든 자세히 설명하겠습니다.
파일을 수정해야 했습니다.
/etc/apache2/sites-available/default
또는 심볼릭 링크:/etc/apache2/sites-enabled/000-default
블록 내부:
<VirtualHost *:80>
# blah blah some code...
</VirtualHost>
다음을 삽입했습니다.
<Location /sometag >
ProxyPass http://B:8080/
ProxyPassReverse http://B:8080/
</Location>
something
사용할 수 있는 문자열은 어디에 있습니까? 의미 있는 것을 사용하는 것이 더 좋습니다. 예를 들어 여기서는 와 같은 태그를 사용하는 것이 가장 좋습니다 bserver
. 따라서 구성 파일은 다음과 같습니다.
<VirtualHost *:80>
# blah blah some code...
<Location /bserver >
ProxyPass http://B:8080/
ProxyPassReverse http://B:8080/
</Location>
</VirtualHost>
서버를 다시 시작하세요
service apache2 restart
또 다른 작은 변화를 주어야 합니다. 귀하의 페이지에서 (어쩌면 index.html
무엇이든)서버 A당신은 링크를 다음으로 변경합니다비님의 페이지
<a href="http://B:8080/bspage.php">B-Guy's Link</a>
에게
<a href="bserver/bspage.php">B-Guy's Link</a>
태그를 주목하세요서버, 이제 끝났습니다. 지금 연결하면ㅏ그리고 포트를 포워딩하세요80외부 컴퓨터에
ssh -L 8888:A:80 gate@somegateway
당신은 메인을 열 것입니다ㅏ님의 페이지는 평소와 같습니다.
localhost:8888/index.html
하지만 이제 그걸 클릭하면비님의 링크를 클릭하면 다음 URL로 리디렉션됩니다.
localhost:8888/bserver/bspage.php
완료!
이 방법을 따르면ㅏ컴퓨터를 주( frontend
) 서버로 설정하고 그 뒤에 많은 내부( backend
) 서버가 상주하면 모든 서버에 원격으로 액세스할 수 있습니다.