nginx를 사용하여 SSL 역방향 프록시를 설정하는 방법은 무엇입니까?

nginx를 사용하여 SSL 역방향 프록시를 설정하는 방법은 무엇입니까?

내 질문과 관련이 있습니다.nginx를 사용하여 역방향 프록시를 설정하는 방법, SSL 연결이 추가로 필요한 설정을 설정할 때 이제 막혔습니다.

내 호스트 시스템에 매핑된 SSL 포트 4430을 제공하는 도커 컨테이너가 있습니다. 웹서버가 자체 서명된 인증서를 사용하고 있습니다.

/etc/hosts파일에서 다음을 정의했습니다.

127.0.0.1 app.local

내 nginx 서버 구성은 다음과 같습니다.

server {
    listen 80;
    server_name app.local;
    location / {
        return https://$host$request_uri;
    }
}

server {
    listen 443;
    server_name app.local;
    location / {
        proxy_pass https://127.0.0.1:4430;
    }
}

내 webapp에 액세스하면 https://127.0.0.1::4430제대로 작동합니다. 하지만 처음에는 인증서에 대한 경고가 표시되므로 허용해야 합니다.

http://app.local그러나 또는 를 통해 연결하면 https://app.local브라우저에 다음이 표시됩니다.

SSL connection error
ERR_SSL_PROTOCOL_ERROR

또한 허용할 수 있는 인증서 경고가 나타날 것으로 예상했습니다.

nginx와 함께 SSL을 사용할 때 역방향 프록시를 작동시키는 방법은 무엇입니까?

답변1

nginx에서 SSL을 종료하려면:

a) 서버 섹션에서는 포트와 'ssl'을 지정해야 합니다.

listen 192.168.2.26:443 ssl;

b) 그런 다음 서버 블록은 인증서 및 SSL 매개변수도 지정합니다.

ssl_certificate      new-cert.cer;
ssl_certificate_key  new-cert.key;

ssl_protocols SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;

답변2

제 생각엔 (저도 Nginx를 처음 접하는 사람입니다) 두 번째 서버 블록에는 좀 더 많은 것이 필요합니다. 제 서버에는 다음과 같은 내용이 있습니다.

listen 443 ssl;
listen [::]:443 ipv6only=on ssl;
charset utf-8;
client_max_body_size 75M;
server_name example.com www.example.com;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;

다음 사항에 유의하세요.

  1. Listen 지시문은 SSL을 지정합니다.
  2. 인증서와 인증서 키가 지정됩니다. 인증서는 사이트에 액세스하는 모든 사람에게 전송되므로 쉽게 액세스할 수 있는 위치에 있어야 합니다. 키는 필요한 사용자만 액세스할 수 있는 위치에 있습니다.

ipv6, charset 및 client max 본문은 내 서버에 있는 줄이지만 여기서 수행하는 작업에는 필요하지 않습니다. 원하는 이름을 지정하고 어디에나 배치할 수 있으므로 다른 곳에 저장할 경우 정확한 파일 이름이나 위치에 연연하지 마세요. 이것이 내가 원하는 방식이며 내 ls -l결과는 다음과 같습니다.

-rw-r--r-- 1 root root 1887 Oct  8 14:16 /etc/ssl/certs/example.com.crt
-rw-r----- 1 root ssl-cert 1704 Oct  8 13:47 /etc/ssl/private/example.com.key

관련 정보