2 개의 서버 블록을 사용하고 싶습니다. 첫 번째는 다음과 같습니다HTTP/2에서 Nginx의 server_name을 사용하는 방법은 무엇입니까?
는server {
listen 443 ssl http2 fastopen=3 reuseport;
server_name a.example.xyz;
include server_safe.conf;
root /home/www/blog/;
}
두 번째는 다음과 같습니다
server {
listen 443 ssl http2;
server_name b.example.xyz;
include server_safe.conf;
}
내가 원하는 무엇 : 가 나는 내 웹 사이트를 방문하도록
c.example.xyz
를 사용하는 경우 server_name은, 즉, 유효하려면, 모두
a.example.xyz
,
b.example.xyz
,
c.example.xyz
이 동일한 IP 인 경우 서버는 에 없기 때문에
c.example.xyz
요청을 차단해야합니다. 내가
https://c.example.xyz
을 입력하면
는 그러나 Nginx에 여전히 내가 대신 :authority
가, HTTP/2 헤더에는 호스트가 없습니다 알고 a.example.xyz
로 요청 및 reponse를 받게됩니다.
내 질문은 : 어떻게 다른 요청을 거부 할 수 있습니까? host(:authority)
= a(b).example.xyz
답변에 따르면, 다른 서버 블록 앞에 'server_name _'이있는 새 서버 블록을 작성하여 다른 요청에 404를 제공 할 수 있습니다. 물론 404의 응답을 얻었으므로, https 협상을 진행했습니다. 내 인증서는 SAN을 가지고, 내 nginx SNI를 가지고 있으므로 인증서가 문제가되지 않습니다. 마침내 고마워. – user3978288