2016-07-01 1 views
1

들어오는 https 요청을 인증하고 동일한 인트라넷 (LAN)의 다른 호스트에있는 서버로 전달하기 위해 nginx를 설정하려고합니다.역 프록시 (요새)로 nginx를 설정하는 방법; "400Bad Request : 너무 많은 호스트 헤더"가 있습니다

proxy_redirect    off; 
    proxy_set_header   Host   $http_host; 
    proxy_set_header   X-Real-IP  $remote_addr; 
    proxy_set_header   X-Forwared-For proxy_add_x_forwarded_for; 

upstream syncthing_gui 
    { 
     server 10.0.0.129:8329; 
    } 

server { 
    listen  443 ssl; 
    server_name geras.duckdns.org; 

    ssl on; 
    ssl_certificate /etc/letsencrypt/live/geras.duckdns.org/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/geras.duckdns.org/privkey.pem; 

    auth_basic "Username and Password required (syncthing)"; 
    auth_basic_user_file /etc/nginx/.htpasswd; 

    location /sync { 

    error_log /var/log/nginx/error.log info; 
    access_log /var/log/access.log; 
    proxy_pass http://syncthing_gui; 
} 

}

을하지만 난 오류 400 Bad Request: too many Host headers를 얻을 : 다른 소스에서 나는 다음과 같은 conf의 파일에 도착했다. 나는 무엇을 바꾸어야합니까?

+0

'proxy_redirect'와'proxy_set_header' 지시어를'location/sync' 블록에 놓고 차이가 있는지 확인하십시오. –

답변

3

이 메시지는 nginx가 아닌 Golang입니다 (Syncthing은 Go로 작성되었습니다). 처음에 홍당무로, 나는이 오류를 해석하여 너무 많거나 너무 큰 헤더가 nginx로 보내지는 것을 의미합니다. 하지만 그게 무엇입니까 정말 의미가 너무 많습니다 Host: abc.example.com 헤더입니다. 구성에서

, 당신은 당신은 서버 두 HTTP를 Host: 헤더를 보낼 nginx를 일으키는 중복 또는 유사한 라인을 가지고,

proxy_set_header Host $http_host;

내가 다른 설정 파일에 베팅을드립니다. 대부분의 소프트웨어는 이에 대해 신경 쓰지 않지만 Go의 표준 HTTP 서버는 과 함께 요청을 확인하고 거부합니다.