2012-07-25 4 views
8

콜백 URL을 제외하고 nginx를 HTTP 인증과 젠킨스를 보호하고 내가 원하는 nginx를 HTTP 인증으로 보호되도록 요청 :내 서버에서 젠킨스를 설치

:

http://my_domain.com:8080 
http://ci.my_domain.com 

한 곳을 제외하고 보호됩니다

http://ci.my_domain.com/job/my_job/build 

빌드를 트리거하는 데 필요합니다. 나는 nginx에 좀 익숙해 져서 nginx 설정을 고수했다.

upstream jenkins { 
    server 127.0.0.1:8080; 
} 

server { 
    listen x.x.x.x:8080; 
    server_name *.*; 

    location '/' { 
    proxy_pass http://jenkins; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 

    auth_basic "Restricted"; 
    auth_basic_user_file /path/.htpasswd;  
    } 
} 

나는 위의 설정처럼 떨어지게을 시도하지만 http://my_domain.com:8080를 방문 할 때 어떤 HTTP의 인증이 없습니다.

+0

그의 거의 동일한 복제 나를 위해 잘 작동; 당신은 실제 설정에서 업스트림과 nginx 모두 8080을 사용하지 않고 있습니까? – furq

+0

실제 설정에서 무엇을 의미합니까? 내가 nginx 8080 포트 요청을 잡을 수 없다는 것을 이해하기 때문에 나는 방화벽과 단지 프록시 ci 하위 도메인 요청을 x.x.x.x : 8080에 차단해야 할 필요가있다. – makaroni4

답변

7

마지막으로이 문제를 해결하는 방법을 알아 냈습니다. 먼저 젠킨스 관리 페이지에서 "보안 사용"옵션의 선택을 취소해야합니다. 보안이 비활성화되면 우리는 http://ci.your_domain.com/job/job_name/build과 같은 요청으로 작업을 실행할 수 있습니다.

URL을 트리거하기 위해 토큰을 추가하려면 보안을 설정해야하며 "프로젝트 기반 매트릭스 권한 부여 전략"을 선택하고 익명 사용자에게 관리자 권한을 부여하십시오. 프로젝트의 구성 페이지에서 후가 지정할 수있는 옵션은 토큰 때문에 귀하의 요청은 우리가 /job/job_name/build' 같은 URL을 제외하고 nginx를 http_auth와 http://ci.your_domain.com을 보호하기 위해 필요한 보안을 사용하지 않도록 그래서 JENKINS_URL/job/onru/build?token=TOKEN_NAME

처럼 보일 것 "트리거 원격 빌드"입니다.

외부 요청에서 8080 포트를 숨길 필요가 있습니다.

iptables -A INPUT -p tcp --dport 8080 -s localhost -j ACCEPT 
iptables -A INPUT -p tcp --dport 8080 -j DROP 

하지만 내 서버는 우분투에 있기 때문에 나는 의 iptables에게 방화벽을 사용할 수 있습니다! 우분투 (다른 Linux OS에 대해서는 잘 모르겠다) iptables는 재부팅 후에 사라질 것입니다. 따라서 다음과 같이 저장해야합니다.

iptables-save 

그리고 끝이 아닙니다. 이 명령으로 iptables 파일을 얻습니다. 시작에 우리는 iptables를로드해야하고 가장 쉬운 방법은 'uptables 영구'패키지를 사용하는 것입니다 젠킨스와 https://help.ubuntu.com/community/IptablesHowTo#Saving_iptables과 행운을 필요한 경우

sudo apt-get install iptables-persistent 
iptables-save > /etc/iptables/rules 

는 iptables를 좀 더 자세히 살펴!

그리고 서버의 하위 도메인에 젠킨스를 실행하기위한 좋은 사례가 : https://wiki.jenkins-ci.org/display/JENKINS/Running+Hudson+behind+Nginx

관련 문제