내 teampeak 하위 도메인이 ts3 프로토콜로 직접 리디렉션되도록 하위 도메인에 대한 규칙을 만들고 싶습니다.
그럼, 예를 보여드리겠습니다:
RewriteCond %{HTTP_HOST} ^(ts\.)?example\.com$ [NC]
RewriteRule ^(.*)$ ts3://example.com/$1 [R=301,L]
불행하게도 이 방법은 작동하지 않습니다(무한 루프가 발생함).
솔직히 말해서 저는 .htaccess에 대한 경험이 없습니다. 어떤 모습이어야 할까요? 몇 가지 다른 예를 시도했지만 대부분은 디렉토리에 다시 쓰거나 다른 도메인으로 리디렉션하므로 예가 누락되었습니다...
내가 노력하는 것이 가능할까요?
답변1
긴 이야기 짧게 .htaccess
이는 이를 위해 설계되지 않았으며 TS3은 여러 프로토콜 관련 이유로 Apache의 HTTP 트래픽을 이해할 수 없습니다. 가장 좋은 해결책은 도메인의 DNS 구성에 ts.example.com
별칭을 만들고 클라이언트에게 Teamspeak 연결 포트가 있는 위치에 연결하도록 요청하는 것입니다 .example.com
ts.example.com:x
x
.htaccess
이 파일은 Apache 웹 서버에서 사용됩니다. HTTP 트래픽을 처리하는 시스템의 일부입니다. Teamspeak 3은 HTTP 서버가 아니기 때문에 HTTP 트래픽을 이해할 수 없습니다. 따라서 파일을 사용하여 HTTP 트래픽을 TS3으로 리디렉션하는 것은 .htaccess
(올바른 접근 방식이라고 가정) 별 의미가 없습니다. TS3은 HTTP 요청을 이해할 수 없기 때문에 요청을 삭제합니다.
Teamspeak 서비스는 주소가 아닌 포트와 연결됩니다. 를 사용하면 netstat
실제로 포트를 찾을 수 있습니다. 저는 Teamspeak를 잘 모르지만 포트 9987과 10011에 대해서는 들어본 적이 있습니다... TS3 구성을 확인하셔야 합니다 :)
ts.example.com
모든 것을 에서 로 리디렉션하려면 example.com
이 방식으로 작동하도록 도메인 이름을 구성하는 것이 좋습니다. 지정된 ts.example.com
별칭 의 경우 example.com
해당 별칭으로 전송된 모든 요청이 ts.example.com:9987
도착합니다 example.com:9987
. 이 구성은 일반적으로 권한 있는 이름 서버에 의해 처리되며 변경 사항을 적용하려면 DNS 영역 관리에 액세스할 수 있어야 합니다.
이제 리디렉션모두특히 ts.example.com
포트 9987의 트래픽은 더 복잡하고 비생산적입니다. Teamspeak는 여러 포트(쿼리, 음성 데이터, 파일 전송...)를 사용합니다. 모든 것을 9987로 보내는 경우 쿼리 및 파일 전송을 수신하지 못해 초기 연결이 작동하지 않을 수 있습니다. 또한 클라이언트가 이름을 확인한 후 IP를 통해 연결하기 ts.example.com
때문에 컴퓨터에서 들어오는 트래픽을 구별할 수 없습니다 .example.com
HTTP 서버(또는 프록시)는 실제로 HTTP 헤더를 사용하여 구별할 수 있지만 Host
여기에서 처리해야 할 프로토콜 관련 문제가 많이 있습니다.
- HTTP는 연결 기반이므로 트래픽은 TCP에서 UDP로 이동해야 합니다(탑님 안녕하세요!).
Host:
TS3 바이너리 데이터만 남도록 헤더를 제거해야 합니다. 물론 텍스트와 바이너리 데이터를 혼합하는 것은 나쁜 생각입니다.- 프록시는 또한 파일 전송 및 TS3 쿼리에서 음성 데이터를 구별할 수 있어야 하며...그런 프록시는 존재하지 않는다고 확신합니다.
- ...