2017-01-24 3 views
0

다음 'n'개의 하위 도메인과 함께 'example.com'이라는 도메인이 있고 모두 동일한 IP 주소 (서버 A라고 가정)에 'A'레코드가있는 것으로 가정합니다.Nginx Domain scheme 리디렉션 하위 도메인 제외

a.example.com, b.example.com, c.example.com ... z.example.com

는 mailgun '로 설정 CNAME 또 다른 하위 도메인'email.example.com '가있다 .org '.

이제 모든 HTTP 요청을 HTTPS로 전달하려는 nginx 구성의 서버 A가 있습니다.

server { 
    listen 80; 
    return 301 https://$host$request_uri; 
} 

그리고 email.example.com mailgun.org을 가리키는 제외하고 하위 도메인의 나머지 마찬가지로 443

server { 
    listen 443 ssl; 
    server_name a.example.com; 
    //SSL Details 
    location/{ 
      root /var/www/a/; 
    } 

개별 서브 도메인 요청을 처리하는 코드 블록으로 설정합니다.

이제 http://email.example.com 으로 리디렉션됩니다. (DNS 수준에서)

http://example.com 그들은 https://example.com으로 리디렉션됩니다. (서버 수준에서).

http://a.example.comhttps://a.example.com으로 리디렉션됩니다.

문제 (서버 수준에서) : 누군가가이 브라우저 https://email.example.com로 리디렉션되고있다 http://email.example.com를 방문하려고 http://example.com에 방문 후. mailgun.org에 대한 제어권이 없으므로 email.example.com에 대한 https 요청을 처리 할 수 ​​있습니다.

nginx config를 설정하는 방법은 없습니까? HTTP 요청이 모두 email.example.com을 제외한 HTTPS로 리디렉션되는 위치는 어디입니까?

+0

당신이 묘사하는 것은 다소 희한 할 것 같지 않습니다. http : // email.example.com의 문제는 브라우저 나 DNS에서 발생하는 것 같습니다. 따라서 nginx 구성은 아무 관계가 없습니다. 귀하의 첫 번째 코스는 DNS/브라우저/nginx가 실제로하고있는 것을 경험적으로 확인하는 것입니다. – symcbean

+0

첫째, "DNS 수준에서"리디렉션이 없습니다. 둘째, SSL 세부 정보 *를 사용하십니까? HSTS 헤더가 있습니까? –

+0

@symcbean 정확히., http : // email.example.com을 https로 리디렉션하지 않도록 브라우저에 알리는 방법은 무엇입니까? 내가 http://example.com을 방문하면 https://example.com으로 리디렉션되지만 그 후에는 email.example.com도 https로 리디렉션됩니다. –

답변

1

좋아, 문제가 발견되었습니다.

example.com의 nginx 구성을 하위 도메인을 포함하지 않도록 변경했습니다.

즉.

는 브라우저가 현재 하위 도메인에 헤더를 추가하지 않는 것이 다음 줄
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; 

다음과 같습니다.

, 그래서

add_header Strict-Transport-Security "max-age=31536000;" always; 

변경.

관련 문제