2017-02-02 1 views
0

나는 2 젠킨스 서버 nginx 역방향 프록시 뒤에 실행하고 싶습니다,하지만 그것을 구성하는 적절한 찾을 수 없습니다. 내가 /jenkins_test로 위치를 변경하려고하면 그것은 더 이상 작동하지 않습니다보다2 젠킨스 서버용 NGINX 역방향 프록시. 방법?

아래의 설정은,

location /jenkins { 
      proxy_pass https://contoso.com/jenkins; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
} 

잘 작동한다.

무엇이 잘못 되었나요?

답변

0

자체 서버 섹션에 2 개의 각 jenkins 인스턴스를 정의해야합니다. 그러면 nginx에서 호출하는 URL에 따라 올바른 젠킨스 서버가 응답합니다. 당신이 그 (것)들을 당신이 중 하나에이 URL을 수정해야합니다 다른 젠킨스 인스턴스하려면이 예에서

http{ 

    # application server for first jenkins instance 
    upstream app_servers_first_jenkins_instance { 

    # if jenkins is running on the same server this should be something like 127.0.0.1 ... 
     server https://contoso.com/jenkins; 

    } 

    # application server for secons jenkins instance 
    upstream app_servers_second_jenkins_instance { 

     server https://contoso.com/jenkins; 

    } 

# JENKINS SERVER 1 
server{ 
listen 80; 
    server_name jenkinsfirstinstance.yourdomain.com; 
    location/{ 
    proxy_pass http://app_servers_first_jenkins_instance; 
    } 
} 

# JENKINS SERVER 2 
server{ 

listen 80; 
    server_name jenkinssecondinstance.yourdomain.com; 
    location/{ 
    proxy_pass http://app_servers_second_jenkins_instance; 
    } 
} 

} # END OF HTTP SECTION 

두 URL이 같은 jenknins 엔드 포인트 (https://contoso.com/jenkins)를 호출합니다 : 귀하의 nginx의 설정이 같은 구조를 가질 수있다 업스트림 섹션

+0

불행히도 http://contoso.com/jenkins1 및 http://contoso.com/jenkins2와 같은 링크 만 사용할 수 있습니다. – Sam

0

nginx 프록시 뒤에 2 개의 서버를 실행하려면 2 개의 위치 컨텍스트 ("블록"이라고도 함)가 필요하다는 의미입니다. 아마 /etc/nginx/sites-availables에 위치한 구성 파일에서

당신은 위치를 추가해야합니다

http{ 
    listen 80; 

    location /jenkins1 { 
     proxy_pass http://jenkins1-local-ip-address:8000; 
     include /etc/nginx/proxy_params; 
    } 
    location /jenkins2 { 
     proxy_pass http://jenkins2-local-ip-address:8001; 
     include /etc/nginx/proxy_params; 
    } 
} 

것은 당신 schould 노트 나는 당신의 젠킨스 서버가 동일한 LAN (로컬 영역 네트워크)에 있음을 고려하는 것이있다, 그렇지 않으면 귀하의 서버가 이미 인터넷을 통해 액세스 할 수 있기 때문에 프론트에 프록시를 배치하는 것은 의미가 없습니다.

젠킨스 서버가 HTTPS를 통해 액세스 할 수있는 경우 위치 컨텍스트에서 httphttps으로 변경하고 포트 번호를 listen 443으로 수정하고 일부 SSL 인증서 구성을 편집하십시오.

+0

감사합니다. 다른 링크 대신 다른 포트를 사용하는 것을 피할 수 있습니까? https://contoso.com/jenkins1 및 https://contoso.com/jenkins2처럼? – Sam

+0

예 가능합니다. 그러나이 경우 서버는 2 개의 다른 실제 시스템에서 실행되어야합니다. proxy_pass 지시문에 매개 변수로 전달 된 주소는 도메인 이름이나 IP 주소 및 선택적 포트 "로 지정할 수 있습니다. 참고 http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass 하지만 DNS 서버에 요청을 보내지 않도록 서버가 LAN에있는 경우 IP 주소를 설정하는 것이 좋습니다 – nanachimi

+0

자세한 내용을 제공하려면 네트워크 토폴로지가 필요합니다. 어떤 컴퓨터에서 어떤 서버가 실행되고 있습니까? 같은 서버에있는 모든 서버 (젠킨스와 nginx)? – nanachimi

관련 문제