nginx ‘listen’지시문의 다른 값 이해 ssl http2; 내 목표는이 웹

nginx 구성을 작성 중이며 기본적인 질문이 있습니다.

차이점은 무엇입니까?

listen 443 ssl;vs listen [::]:443 ssl;vslisten [::]:443 ssl http2;

내 목표는이 웹 응용 프로그램의 보안을 유지하지만 이전 클라이언트와도 호환되는 상태입니다.

참고 : [::]:443ipv6과 관련 이 있다는 것을 이해 하지만이 경우 ipv4도 포함합니까? 내 개념을 지우고 싶다.



답변

listen 443 ssl: nginx가 서버의 모든 ipv4 주소에서 포트 443을 수신하도록합니다 ( 0.0.0.0:443)

동안

listen [::]:443 ssl: nginx가 서버의 모든 ipv6 주소에서 포트 443을 수신하도록합니다 ( :::443)


[::]:443매개 변수를 지정하지 않으면 nginx가 ipv4에서 기본적으로 응답하지 않습니다 ipv6only=off.

listen [::]:443 ipv6only=off;


문서에 따라 : http://nginx.org/en/docs/http/ngx_http_core_module.html#listen

ssl :

ssl 매개 변수 (0.7.14)를 사용하면이 포트에서 승인 된 모든 연결이 SSL 모드에서 작동하도록 지정할 수 있습니다.

http2 :

http2 매개 변수 (1.9.5)는 포트가 HTTP / 2 연결 을 승인하도록 구성합니다 .

그렇다고 HTTP / 2 연결 만 허용한다는 의미는 아닙니다.

당으로 RFC7540

다음 홉에서 HTTP / 2 지원에 대한 사전 지식없이 “http”URI를 요청하는 클라이언트는 HTTP 업그레이드 메커니즘을 사용합니다. 클라이언트는 “h2c”토큰과 함께 업그레이드 헤더 필드를 포함하는 HTTP / 1.1 요청을 작성하여이를 수행합니다.

HTTP / 2를 지원하지 않는 서버는 업그레이드 헤더 필드가없는 것처럼 요청에 응답 할 수 있습니다.

HTTP/1.1 200 OK
Content-Length: 243
Content-Type: text/html

HTTP / 2를 지원하는 서버는 101 (스위칭 프로토콜) 응답으로 업그레이드를 승인합니다. 101 응답을 종료하는 빈 행 후에 서버는 HTTP / 2 프레임 전송을 시작할 수 있습니다.

요약 :

HTTP / 2를 지원하지 않는 클라이언트는 서버에 HTTP / 2 통신 업그레이드를 요청하지 않습니다. 이들 간의 통신은 완전히 HTTP1 / 1입니다.

HTTP / 2를 지원하는 클라이언트는 서버에 HTTP1 / 1을 사용하여 HTTP / 2 업그레이드를 요청합니다.

  • 서버가 HTTP / 2가 준비된 경우 서버는 클라이언트에게 다음과 같이 통지합니다. 서버 간의 통신은 HTTP / 2로 전환됩니다.
  • 서버가 HTTP / 2가 준비되지 않은 경우 서버는 HTTP1 / 1로 응답하는 업그레이드 요청을 무시합니다. 서버 간의 통신은 충분한 HTTP1 / 1을 유지해야합니다.

어쩌면 여기에 더 요약되어 있습니다 : http://qnimate.com/http2-compatibility-with-old-browsers-and-servers/


그러나 nginx 문서는 TLS를 통한 HTTP / 2에 대해 다음과 같이 설명합니다.

TLS를 통한 HTTP / 2 연결을 허용하려면“ALPN (Application-Layer Protocol Negotiation)”TLS 확장 지원이 필요하며 OpenSSL 버전 1.0.2 이후에만 사용할 수 있습니다.

이전 고객이이 요구 사항을 준수하는지 확인하십시오.


답변

ipv6onlyIPv6 주소가 IPv4에 적용되는지 여부를 결정 하는 옵션이 있습니다. 기본적으로 켜져 있습니다 (그렇지 않음).

매뉴얼에는 한 번만 설정할 수 있다고 명시되어 있으므로 하나의 listen지시문에서 끄면 모두 꺼집니다.

자세한 내용은 이 문서 를 참조하십시오.