2012-07-25 5 views
8

コールバックURLを除き、nginxのHTTP認証でジェンキンスを保護し、私がしたいnginxのHTTP認証とそれを保護するように要求:私は自分のサーバー上のジェンキンスをインストール

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

1つの場所を除いて保護されます

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ポート要求をキャッチできないので、ファイアウォールでそれをブロックし、x.x.x.x:8080へのプロキシciサブドメイン要求をブロックする必要があります – makaroni4

答えて

7

最後に、この問題を解決する方法を見つけました。まずは、Manage Jenkinsページの "Enable security"オプションのチェックを外す必要があります。セキュリティが無効になっているので、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 

しかし:私のサーバーは、Ubuntuの上にあるので、私はiptablesのにファイアウォールを使用することができます! ubuntu(私は他のLinuxのosesについてはわかりません)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

関連する問題