비표준 포트에서 nginx SSL을 실행하는 방법 index

나는 이것이 적어도 몇 가지 다른 질문의 복제본처럼 보이지만 각 질문을 여러 번 읽었으며 여전히 잘못하고 있습니다.

다음은에 위치한 myexample.com nginx 구성 파일의 내용입니다 /etc/nginx/sites-available.

server {

  listen       443 ssl;
  listen       [::]:443 ssl;

  server_name myexample.com www.myexample.com;
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;

  #Configures the publicly served root directory
  #Configures the index file to be served
  root /var/www/myexample.com;
      index index.html index.htm;

}

https://myexample.com 으로 이동 하면 콘텐츠가 제공되고 연결이 안전합니다. 따라서이 구성은 좋은 것 같습니다.

이제 SSL 포트를 9443으로 변경하고 nginx 구성을 다시로드하면 구성이 오류없이 다시로드되지만 https://myexample.com을 방문 하면 브라우저에 오류가 표시됩니다 (이 사이트에 도달 할 수 없습니다 / myexample.com은 거부했습니다) 연결합니다 (ERR_CONNECTION_REFUSED)

here , herehere (다른 것들 중에서) 제안 및 문서를 시도 했지만 항상 ERR_CONNECTION_REFUSED 오류가 발생합니다.

비표준 포트를 사용한 다음 해당 포트를 명시 적으로 URL에 입력 할 수 있습니다 (예 : https://myexample.com:9443) . 그러나 나는 그것을하고 싶지 않습니다. 내가 원하는 것은 사용자가 myexample.com을 모든 브라우저에 입력하고 nginx가 자동으로 보안 연결로 리디렉션되도록하는 것입니다.

표준 443 SSL 포트를 사용할 때에도 아무런 문제가 없습니다.

편집 : debian / jessie에서 nginx / 1.6.2를 사용하고 있습니다.



답변

지원 입력 “을 위해 https://myexample.com “브라우저에서, 그리고 필요가 처리 nginx포트 9443에 설정 청취, 당신은 추가해야합니다 nginx즉 IP 포트이기 때문에, 여전히 포트 443에서 수신하는 설정을 브라우저가 연결됩니다 .

그러므로:

server {
  listen 443 ssl;
  listen [::]:443 ssl;

  server_name myexample.com www.myexample.com;
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;

  # Redirect the browser to our port 9443 config
  return 301 $scheme://myexample.com:9443$request_uri;
}

server {
  listen 9443 ssl;
  listen [::]:9443 ssl;

  server_name myexample.com www.myexample.com;
  ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

  #Configures the publicly served root directory
  #Configures the index file to be served
  root /var/www/myexample.com;
  index index.html index.htm;
}

인증서는 일반적으로 DNS 호스트 이름에 연결되어 있지만 반드시 포트 일 필요는 없으므로 두 섹션 모두에 동일한 인증서 / 키가 필요합니다 .

도움이 되었기를 바랍니다!


답변

https://example.com 을 입력 할 때 https : // 체계의 표준은 포트 443에 연결하는 것입니다.이 경우 서버가 포트 9443에서 수신 대기하도록 서버를 이동했습니다. 연결이 거부되었습니다. 이 때문에 메시지-포트 443에서 수신 대기하는 것이 없습니다.

포트 443에서 수신 대기하도록 포트 9443으로 연결을 재 지정하거나 URL을 포트의 일부로 포트를 사용하도록 준비해야합니다.


답변

포트를 9443과 같은 비표준 포트로 변경하면 443에서 9443으로 리디렉션을 추가해야합니다. 프록시를 해당 포트로 리버스하도록 nginx를 설정하십시오.