sitelink1  
sitelink2  
extra_vars5  
extra_vars6  

ChatGPT 의 답변은 아래에 기술하였다.

답변중 1, 3 번의 조치만으로도 문제를 해결하였는데, 

2번 Jetty 에서의 SNI 비활성화 설정은 Gradle 에서의 Jetty 에 대한 설정 방법을 먼저 찾아야해서 2번 작업을 생략한 상태로 3번을 먼저 처리했는데

2번을 수행하지 않아도 문제가 해결되어서 이번 작업에서는 무시하였다.

 

 


Nginx를 통해 dev.omnibuscode.com 도메인의 요청을 localhost:7443 포트의 Jetty 서버로 프록시할 때, org.eclipse.jetty.http.BadMessageException: 400: Invalid SNI 오류가 발생하는 원인과 해결 방법은 다음과 같습니다.

이 오류는 SNI(Server Name Indication)가 올바르게 설정되지 않았을 때 발생합니다.

이를 해결하려면 Nginx와 Jetty의 SSL 설정을 조정하여 서로 호환되도록 만들어야 합니다.

아래의 방법을 순서대로 적용해 보세요.

1. Nginx 설정 수정하기

Nginx의 설정 파일에서 proxy_ssl_server_name 옵션을 설정하여 SNI 정보가 포함되도록 합니다.

server {
    listen 443 ssl;
    server_name dev.omnibuscode.com;

    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;

    location / {
        proxy_pass https://localhost:7443;
        proxy_ssl_server_name on;
    }
}

2. Jetty에서 SNI 비활성화하기 (옵션)

만약 Jetty에서 SNI 요구를 비활성화하고자 한다면, Jetty 설정 파일 (jetty-ssl.xml 또는 start.ini 파일 등)에 SNI 설정을 추가할 수 있습니다.

예를 들어, SNIRequired 옵션을 비활성화하는 방법입니다:

<Configure id="Server" class="org.eclipse.jetty.server.Server">
    <Call name="addConnector">
        <Arg>
            <New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
                <Set name="SNIRequired">false</Set>
            </New>
        </Arg>
    </Call>
</Configure>
 

3. 클라이언트와 서버 호스트 이름 일치 확인하기

Jetty에서 SNI가 localhost가 아닌 특정 도메인에 대해 설정된 경우, 해당 도메인과 일치하는 요청이 전달되지 않으면 오류가 발생할 수 있습니다.

Nginx에서 proxy_set_header Host dev.omnibuscode.com;을 설정하여 호스트 이름이 올바르게 전달되도록 하세요.

location / {
    proxy_pass https://localhost:7443;
    proxy_ssl_server_name on;
    proxy_set_header Host dev.omnibuscode.com;
}
 

위 설정으로 Nginx가 Jetty로 전달할 때 올바른 SNI와 호스트 이름 정보를 포함하게 됩니다.

Nginx와 Jetty의 설정을 적용한 후, Jetty 서버를 재시작하고 다시 시도해 보세요.

번호 제목 글쓴이 날짜 조회 수
» [ChatGPT] nginx 에서 jetty 서버로 프록시중 "org.eclipse.jetty.http.BadMessageException: 400: Invalid SNI" 오류 황제낙엽 2024.11.12 167
72 [phind] jetty 와 tomcat 의 차이점 (성능, 사용성, 선호도) 황제낙엽 2024.10.31 237
71 jsp 에서 <script> 로 import 한 js 내의 한글이 깨진다 file 황제낙엽 2024.07.14 296
70 Nginx: 413 – Request Entity Too Large file 황제낙엽 2024.02.17 213
69 nginx 설치, 실행, SSL 설정, 프록시 설정 황제낙엽 2024.02.04 129
68 [bard] Nginx로 서브 도메인에 따라 내부의 포트만 다르게 실행중인 웹서버들을 라우팅 황제낙엽 2024.02.01 136
67 [Bing] "Apache"와 "Nginx" 의 차이점 황제낙엽 2024.01.31 246
66 Nginx 에 대하여 황제낙엽 2024.01.18 149
65 "org.apache.tomcat.util.net.SecureNioChannel.getSslEngine()" is null 황제낙엽 2023.06.22 242
64 windows tomcat 에 Let's Encrypt(SSL) 적용 황제낙엽 2023.06.21 285
63 AutoSet PHP 버전 업그레이드 (7.2.10 to 7.4.32) 황제낙엽 2022.10.09 624
62 401 - Unauthorized: Access is denied due to invalid credentials 황제낙엽 2021.08.27 251
61 iis error - Service Unavailable / HTTP Error 503. The service is unavailable. 황제낙엽 2020.09.23 700
60 [Bitnami WAMP] 설치후 PHP 설정 황제낙엽 2020.07.23 201
59 Autoset의 대안 Bitnami WAMP file 황제낙엽 2020.04.01 241
58 HTTP 오류 403.14 - Forbidden file 황제낙엽 2020.03.04 269
57 바인딩 편집 (사이트 바인딩) file 황제낙엽 2020.03.04 220
56 웹사이트에서 여러 도메인을 사용하는 방법 황제낙엽 2020.03.04 153
55 32비트 응용 프로그램 사용 (ASP, C#) file 황제낙엽 2019.10.31 2164
54 [Tomcat 7] org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15 황제낙엽 2019.10.16 462