나는 여러 고객의 웹 사이트를 호스팅하는 호스팅 플랫폼을 운영하고 있습니다. 앱로드가 nginx에 뒤 이은 Catalyst입니다. 나는 각 클라이언트가 자신의 도메인에 그들 앞에 앞에 www
이 있는지 또는 그 앞에 www
이 없는지 선택할 수있는 능력을 갖기를 바란다. 그런 다음 적절하게 리디렉션 할 수 있기를 바란다. 제 질문은 nginx
레벨이나 Catalyst
레벨에서 이와 같은 것을 처리하는 것이 가장 좋은가요? 일반적으로 간단한 www
에서 non-www
으로 리디렉션되는 것은로드 밸런서 수준에서 처리되지만, 리디렉션하는 방식이 도메인별로 다를 수 있으므로 Catalyst
수준의 리디렉션을 처리하는 것이 더 바람직할까요? 그렇다면 에서 www
에서 non-www
(또는 viceversa)까지 리디렉션을 처리하는 가장 좋은 방법은 무엇입니까? 아니면 nginx
이 더 좋을 것이라고 생각한다면, 이것을 사용하여 이것을 처리하는 가장 좋은 방법은 무엇입니까? 감사!perl 촉매제 www가 아닌 www로 리디렉션
답변
고객의 DNS로 할 수 있습니다. 예를 들어 www.domain.com을 domain.com의 CNAME 별칭으로 설정하고 nginx를 사용하여 www.domain.com을 domain.com으로 다시 작성하는 경우. 나는 이것이 가장 간단한 방법이라고 생각한다. 촉매가 어떤 식 으로든 혼란 스럽습니까?
이렇게 CNAME 별칭을 사용하면 HTTPS에 사용할 수있는 SSL 인증서에주의해야한다는 점에 유의하십시오.
하지만 nginx로 domain.com에 www.domain.com을 다시 작성하면 20 개의 다른 도메인이 nginx로 들어오는 경우 어떻게 도메인을 다시 작성해야하는지 알 수 있습니까? 예를 들어, domaina.com은 www.domaina.com으로 리디렉션되어야하며 domainb.com은 www.domainb.com으로 리디렉션되어야합니다. 아마 내가 당신의 솔루션을 오해하지만 수동으로 각 고유 도메인에 대한 nginx에 대한 설정 파일에 넣어하지 않을까요? – srchulo
DNS 수준에서 발생하기 때문에 다시 작성하지 않아도됩니다. 촉매가 요청에 하나의 표준 도메인을 요구합니까? 나는 당신이보고있는 문제에서 나를 분리시킬 수 있도록 역방향 프록시도 사용한다. –
nginx와 같은 웹 서버는 간단한 URL 리디렉션을 처리하는 데 적합합니다. nginx를 사용하면 다음과 같은 리디렉션을 할 수 있습니다.
server {
listen 0.0.0.0:80;
server_name *.mydomain.com;
rewrite ^(.*) http://mydomain$1 permanent;
}
www에서 non-www로 리디렉션하고 싶거나 각 도메인마다 viceversa를 리디렉션하고 싶습니다. 여기에있는 것은 지원하려는 각 도메인에 대한 서버 구성을 정의해야한다는 것입니다. 도메인을 적당히 지원하면, 매번이 지시어를 추가해야하는 번거 로움이 있습니다. – srchulo
여기서 몇 개의 도메인을 말하고 있습니까? 각 도메인에 가상 호스트가 있습니까? – innaM
@innaM 현재 100 개의 도메인이 있습니다. 그리고 더있을 것입니다. 각 하나에 대한 유령이 아니므로, 나는 그것을 피하려고 노력했다. 그래서 나는 단지 nginx 서버에서 도메인을 가리킬 수 있었고 매회 설정을 망쳐 놓지 않고도 작동시킬 수 있었다. 현재 모든 도메인을 Catalyst 응용 프로그램 서버로 전달하는 서버 블록이 하나 있습니다. 가장 좋은 방법은 각 도메인에 대한 서버 블록을 갖는 것일 것이라고 생각하십니까? 그것은 많은 복사 및 붙여 넣기 일 것입니다! – srchulo
복사 및 붙여 넣기는 생각하지 않았지만 프로세스를 자동화했습니다. 결국, 당신은 perl 프로그래머입니다 :-)하지만 이것이 여러분의 상황에서 옵션인지 아닌지 말할 수는 없습니다. – innaM