8

サーバーにjenkinsをインストールしましたが、nginx http authで保護したいので、次のように要求します。

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

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

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

ビルドをトリガーするために必要です。私はnginxに少し慣れていないので、そのためにnginxconfigを使い続けました。

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;    
  }
}

上記の設定のようにsmthを試しましたが、アクセスhttp://my_domain.com:8080するとhttp認証がありません。

4

1 に答える 1

7

最後に、この問題を解決する方法を見つけました。まず、[Jenkinsの管理]ページで[セキュリティを有効にする]オプションのチェックを外す必要があります。セキュリティを無効にすると、のようなリクエストでジョブをトリガーできますhttp://ci.your_domain.com/job/job_name/build

トークンを追加してURLをトリガーする場合は、セキュリティを有効にする必要があります。[プロジェクトベースのマトリックス認証戦略]を選択し、匿名ユーザーに管理者権限を付与します。プロジェクトの[構成]ページの後に、[リモートでビルドをトリガーする]オプションが表示されます。このオプションでは、トークンを指定して、リクエストが次のようになるようにすることができます。JENKINS_URL/job/onru/build?token=TOKEN_NAME

したがって、セキュリティが無効になっている場合は、のようなURLを除いて、nginxhttp_authでhttp://ci.your_domain.com/job/job_name/build'を保護する必要があります。

そしてもちろん、外部リクエストから8080ポートを隠す必要があります。私のサーバーはUbuntu上にあるので、iptablesファイアウォールを使用できます。

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

だが!ubuntu(他のLinux oseについてはよくわかりません)では、再起動後にiptablesが消えます。したがって、次のように保存する必要があります。

iptables-save

そして、それは終わりではありません。このコマンドを使用すると、iptablesを含むファイルを取得できます。起動時にiptablesをロードする必要があり、最も簡単な方法は「uptables-persistent」パッケージを使用することです。

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

必要に応じてiptablesを詳しく調べてくださいhttps://help.ubuntu.com/community/IptablesHowTo#Saving_iptablesそしてJenkinsで頑張ってください!

また、サーバーのサブドメインでjenkinsを実行する良い例があります:https ://wiki.jenkins-ci.org/display/JENKINS/Running+Hudson+behind+Nginx

于 2012-07-25T13:51:37.110 に答える