2016-11-14 3 views
1

Nginx에서로드 밸런싱을 파악하는 데 문제가 있습니다. 사용하고 있습니다 : - 우분투 16.04 및 - Nginx 1.10.0. 내가 직접 "proxy_pass"로 내 IP 주소를 통과 할 때 짧은에서Nginx 리버스 프록시 업스트림이 작동하지 않습니다.

는, 프록시가 작동 : 내 프록시 컴퓨터를 방문 할 때, 나는 프록시 IP에서 콘텐츠를 볼 수 있습니다

server { 
    location/{ 
      proxy_pass http://01.02.03.04; 
    } 
} 

... 내가 업스트림 지시어를 사용하지만, 그렇지 않습니다 :

upstream backend { 
    server 01.02.03.04; 
} 

server { 
    location/{ 
      proxy_pass http://backend; 
    } 
} 

내 프록시 컴퓨터를 방문, I는 기본 Nginx의 서버 페이지가 아닌 상류 IP 주소의 내용과 인사하고있다.

추가 지원이 필요합니다. 나는 많은 연구를했지만 "상류"가 효과가없는 이유를 알 수 없다. 나는 어떤 오류도 내지 않는다. 단지 프록시가 아닙니다. 내가 답을 찾을처럼 좋아

+1

업스트림에 포트를 지정하려고 했습니까? 'server 01.02.03.04 : 80;' – karliwson

+0

나는 해냈다. 너무 이상해. –

답변

0

이 보인다 ... 적어도 위의 시나리오에 대한 백엔드 서버에 대한

두 가지, IP의 addressses 사용 : 포트를 지정해야합니다

  1. 포트 번호는 다음과 같을 수 없습니다 : 80 (@karliwsn에 따르면 포트는 80 일 수 있습니다. 업스트림 서버가 리버스 프록시와 동일한 포트를 수신 할 수 없다는 것입니다. 아직 테스트하지는 않았지만주의해야합니다).

백엔드 서버 블록 (들)은 다음과 같이 구성해야합니다 :

server { 

    # for your reverse_proxy, *do not* listen to port 80 
    listen 8080; 
    listen [::]:8080; 

    server_name 01.02.03.04; 

    # your other statements below 
    ... 
} 

및 역방향 프록시 서버 블록은 아래와 같이 구성해야합니다 :

upstream backend { 
    server 01.02.03.04:8080; 
} 

server { 
    location/{ 
     proxy_pass http://backend; 
    } 
} 

은 백엔드 것처럼 보인다 서버가 듣고 : 80, 리버스 프록시 서버가 콘텐츠를 렌더링하지 않습니다. 서버가 실제로 일반 대중을 위해 기본 포트 80을 사용하고 있기 때문에 그것이 맞는 것 같습니다.

고맙습니다. @karliwson이 포트 재검토를 부탁드립니다.

+1

실제로 업스트림의 포트는 80 일 수 있지만 nginx가 사용하는 주 IP 주소와 다른 IP를 수신해야합니다. 필자는 백엔드가 원격 서버에있는 경우를 제외하고는 일반적으로 localhost에서 수신 대기하도록합니다. – karliwson

관련 문제