nginx와 다른 하위 도메인이 있습니다.
a.mydomain.com
b.mydomain.com
c.mydomain.com
Nginx에는 4 가지 규칙이 있습니다.
1) 다시 쓰기 규칙 :
server {
listen 80
server_name gl.udesk.org;
root /nowhere;
rewrite ^ https://a.mydomain.com$request_uri permanent;
}
2) https 규칙 :
server {
listen 443;
server_name a.mydomain.com;
root /home/a/a/public;
ssl on;
ssl_certificate conf.d/ssl/a.crt;
ssl_certificate_key conf.d/ssl/a.key;
ssl_protocols ...
ssl_ciphers ...
ssl_prefer_server_ciphers on;
location ...
}
3) http 기본 규칙 :
server {
listen 80 default_server;
return 444;
}
4) https 기본 규칙 :
server {
listen 443 default_server;
return 444;
}
따라서 nginx를 시작하고 다음을 수행하십시오.
- 브라우저에서 http://a.mydomain.com 으로 이동하면 https://a.mydomain.com으로 리디렉션되고 오류 107 (net :: ERR_SSL_PROTOCOL_ERROR) : SSL 프로토콜 오류가 반환됩니다.
- 브라우저에서 https://b.mydomain.com으로 이동하면 오류 444가 다시 반환 될 것으로 예상합니다. 그러나 대신 동일한 오류 107 (net :: ERR_SSL_PROTOCOL_ERROR) : SSL 프로토콜 오류를 반환합니다.
- DNS 제공 업체 CNAME (예 : a, b, c)이 등록한 모든 사람
- 모든 http 버전 (예 : 규칙 3-)이 예상대로 작동합니다.
- http://a.mydomain.com 은 https : // 버전으로 리디렉션됩니다.
- http://b.mydomain.com 및 http://c.mydomain.com 이 구성된대로 오류 444를 다시 반환합니다.
그렇다면 왜 nginx 의 https 규칙 이 구성하기가 까다 롭고 http 버전과 동일한 동작을 얻도록 올바르게 구성해야합니까?
최신 정보:
새 인증서 작성 및 추가
ssl on;
ssl_certificate conf.d/ssl/default.crt;
ssl_certificate_key conf.d/ssl/default.key;
지금 작동하지만 SSL 인증서가 필요없는 솔루션이 있습니다. 인증서를 제공하지 않고 https://a.mydomain.com 을 제외한 모든 https (포트 443) 하위 도메인에 대한 모든 연결을 재설정하기 만하면 됩니다.
nginx