2017-09-13 2 views
1

Nginx가 포트 5000에서 실행되는 리버스 프록시가 있고 포트 5000으로 들어오는 모든 요청을 https 요청으로 리디렉션하려고합니다.Nginx 역방향 프록시 : 모든 HTTP 요청을 https로 리디렉션

오른쪽 지금은 오류가 점점 오전 : 400 잘못된 요청하는 일반 HTTP 요청이 HTTPS로 전송 된 포트

server { 
      listen 5000 ssl; 
      server_name myserver.com; 

      location/{ 
       proxy_pass     http://127.0.0.1:8080; 
       proxy_set_header   X-Real-IP $remote_addr; 
       proxy_set_header   X-Forwarded-For \$proxy_add_x_forwarded_for; 
       proxy_set_header   X-Forwarded-Proto $scheme; 
       proxy_set_header   X-Forwarded-Server $host; 
       proxy_set_header   X-Forwarded-Host $host; 
       proxy_set_header   Host $host:5000; 


       add_header 'Access-Control-Allow-Methods' 'GET, POST'; 
       add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type'; 
       add_header 'Access-Control-Allow-Credentials' 'true'; 

       # here comes the basic auth, after the options part 
       auth_basic   'Restricted'; 
       auth_basic_user_file path/to/.htpasswd; 

      } 

      ssl on; 
      ssl_certificate path/to/crt; 
      ssl_certificate_key path/to/key; 
     } 

그럼 내가

if ($scheme != "https") { 
    rewrite^https://$host$request_uri permanent; 
} 

if ($scheme != "https") { 
    return 301 https://$host$request_uri permanent; 
} 

아무것도 추가하지와 시도는 문제를 해결하는 것 같다. 이 문제를 해결하려면 어떻게해야합니까?

+0

가능한 복제 [의 nginx는 HTTP를 HTTPS로 리디렉션] http://nginx.org/en/docs/http/ngx_http_ssl_module.html의 "오류 처리"섹션 (https://stackoverflow.com/questions/3470290/nginx- 497 검사에 대한 자세한 내용을 알고 redirect-https-to-http) – lifeisfoo

답변

0

글쎄, error_page를 사용하는 나를 위해 트릭을 할 것으로 보인다.

server { 
     listen 5000 ssl; 
     server_name myserver.com; 
     error_page 497 https://$host:5000$request_uri; 
     .. 
     .. 
    } 

가의
0

단순한 것처럼 들리 겠지만 입력 한 도메인 이름 앞에 "https : //"를 추가해 보셨습니까? 나는 디폴트가 항상 평범한 "http"요청이라는 것을 발견했다.

+0

그래도 작동하지만 일부 요청에 대해 잠시 후 페이지가 새로 고쳐지고 'https : //'가 제거되고 위에서 언급 한 오류 페이지에 착륙합니다. – InfamousCoder

+0

다음은 답변입니다. 원한다면 - SSL URL에 자동으로 리디렉션하십시오. –

+0

위치 내에서 proxy_redirect를 사용합니까? – InfamousCoder

2

가정 HTTP 트래픽 포트 80을 통해 제공,이 포트에 별도의 서버 블록 듣기를 추가하여 HTTPS로 리디렉션 할 수 있습니다

server { 
    listen 80; 
    server_name myserver.com; 

    location/{ 
     return 301 https://myserver.com$request_uri; 
    } 
} 
관련 문제