![Apache는 특정 URL 또는 하위 도메인을 내부 IP로 리디렉션합니다.](https://linux55.com/image/146026/Apache%EB%8A%94%20%ED%8A%B9%EC%A0%95%20URL%20%EB%98%90%EB%8A%94%20%ED%95%98%EC%9C%84%20%EB%8F%84%EB%A9%94%EC%9D%B8%EC%9D%84%20%EB%82%B4%EB%B6%80%20IP%EB%A1%9C%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98%ED%95%A9%EB%8B%88%EB%8B%A4..png)
내 홈 네트워크의 웹 서버 옆에 gitlab 서버가 실행되고 있습니다. 내 웹 서버에서 일부 도메인으로 Apache2를 실행합니다. example.com도 그 중 하나입니다. 이제 내 목표는 사용자가 example.com/gitlab 또는 gitlab.example.com을 방문할 때 gitlab 로그인 페이지를 받는 것입니다. 실제로 리디렉션이 특정 URL이나 하위 도메인에서 발생하는지 상관하지 않습니다. 나는 많은 것을 시도했지만 그 중 어느 것도 나에게 도움이 되지 않았습니다(아마도 내가 계속 잘못하고 있었을 수도 있습니다).
나는 또한 다음과 같은 관련 포럼 게시물을 읽었습니다.
- Apache 가상 호스트를 사용하여 통과 포트를 유지하는 내부 IP로 하위 도메인을 리디렉션합니다.
- Apache의 이름 기반 가상 호스트를 사용하여 내부 IP로 리디렉션
- https://www.linuxquestions.org/questions/linux-server-73/apache-redirect-to-internal-server-919321/
- ...
하지만 저는 현재 실행 중인 것이 하나도 없습니다.
내 거기본 프로필항상 포트 80을 포트 443(HTTPS)으로 리디렉션하도록 구성합니다.
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://www.example.com/
[...]
</VirtualHost>
그래서 이건 내꺼야example.com.conf앞으로:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/html/example.com
SSLEngine on
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
</VirtualHost>
먼저 리디렉션을 시도합니다.URL에서. 나는 다음을 추가했다:
ProxyRequests Off
ProxyPass /gitlab http://192.168.0.115:80/
ProxyPassReverse /gitlab http://192.168.0.115:80/
이것은 정확히 작동하지 않지만 URL을 입력하면"404 요청한 URL /users/sign_in을 이 서버에서 찾을 수 없습니다.". '/users/sign_in'은 내 gitlab 서버의 로그인 페이지 경로이므로 적어도 뭔가 작동하는 것 같습니다. 저에게 이상한 점은 루트를 내부 IP로 리디렉션하면 작동한다는 것입니다.
ProxyRequests Off
ProxyPass / http://192.168.0.113:80/
ProxyPassReverse / http://192.168.0.113:80/
작동하지만 이제 더 이상 실제 웹사이트에 액세스할 수 없습니다.
그런 다음 리디렉션을 시도합니다.하위 도메인에서. 나는 다음을 추가했다:
<VirtualHost *:443>
ServerName gitlab.example.com
ProxyPass / http://192.168.0.113/
ProxyPassReverse / http://192.168.0.113/
</VirtualHost>
하지만 난 받는다"사이트에 접속할 수 없습니다". 저는 하위 도메인도 운영하지 않습니다.
답변1
/gitlab 비트를 제거하려면 mod_rewrite를 사용해야 할 수도 있습니다. 그것은 다음과 같습니다:
rewriteBase "/gitlab"
rewriteRule "^gitlab/(.*)" "http:/192.168.0.113/$1" [P]