7

http baisc 認証で gerrit を設定しようとしていますが、私の httpd 設定は

<VirtualHost *:8081>
    ServerName localhost

    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On

    <Proxy *>
          Order deny,allow
          Allow from all
    </Proxy>

<Location "/login/">
AuthType Basic
AuthName "Gerrit Code Review"
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwd/passwords
Require valid-user
</Location>
ProxyPass / http://localhost:8081/
</VirtualHost>

そして私のgerrit.configは

[gerrit]
        basePath = git
        canonicalWebUrl = http://localhost:8081/
[database]
        type = mysql
        hostname = localhost
        database = reviewdb
        username = gerrit
[auth]
        type = HTTP
[sendemail]
        smtpServer = localhost
        smtpUser = gerrit
[container]
        user = gerrit
        javaHome = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre
[sshd]
        listenAddress = *:29418
[httpd]
        listenUrl = proxy-http://*:8081/
[cache]
        directory = cache

どこが間違っているのかわかりませんが、http://xxxx:8081へのアクセスは言う

The HTTP server did not provide the username in the Authorization header when it forwarded the request to Gerrit Code Review.

If the HTTP server is Apache HTTPd, check the proxy configuration includes an authorization directive with the proper location, ensuring it ends with '/': 

私の gerrit は inbuild jetty countainer で実行され、私の OS は centos 6.4 です。

どこが間違っていますか。

4

3 に答える 3

5

わかった。実際、ポートに仮想ホストを作成してい8081て、Jetty (gerrit に付属) も同じポートをリッスンしていました。構成はほとんど同じままでしたが、これらは追加の手順です:-

  • selinux に新しいポートを追加します (最初にいくつかの基本的なポートが定義されています)。セキュリティが問題にならない場合は、無効にすることができます。
  • httpdにこのポートをリッスンするように指示します(私の場合は追加しました)ので、ファイル8082に行を追加しlisten <port-no>ますhttp conf
  • 仮想ホストをポート番号に変更して、仮想ホストをポート 8082 に設定します。

    <VirtualHost *:8082>
        ServerName localhost
    
        ProxyRequests Off
        ProxyVia Off
        ProxyPreserveHost On
    
        <Proxy *>
              Order deny,allow
              Allow from all
        </Proxy>
        <Location "/login/">
              AuthType Basic
              AuthName "Gerrit Code Review"
              AuthBasicProvider file
              AuthUserFile /usr/local/apache/passwd/passwords
              Require valid-user
        </Location>
    
        ProxyPass / http://localhost:8081/
    </VirtualHost>
    
  • 正規の URL をポートに変更します8082(同じポートにリダイレクトされるように)

  • 最後に、Apache と Gerrit を再起動します (your-host:8082 にアクセスします)。
于 2013-08-13T07:07:44.743 に答える
3

認証が提供されることを期待してそれをGerritします。HTTP 認証を使用する場合、匿名アクセスは許可されません。

これが機能するには、ルートで認証する必要があり、Location ブロックは次のようになります。

<Location "/">
  AuthType Basic
  AuthName "Gerrit Code Review"
  AuthBasicProvider file
  AuthUserFile /usr/local/apache/passwd/passwords
  Require valid-user
</Location>
于 2013-08-12T14:28:39.607 に答える
2

構成にはいくつかの問題があります。

  1. Apache と同じポート 8081 でリッスンしようとしますが、これは不可能です
  2. ProxyPass は最適ではありません。いくつかの小さな問題が発生します。これらの問題は次のとおりです。
    1. main/sub のようにスラッシュを含むプロジェクト名を作成できない
    2. ファイルをレビューするときに、ファイルの横にチェック マークが表示されず、レビュー済みであることを示します。これは、スラッシュが適切に処理されていないことに関連しています。
  3. ルートではなくサブフォルダーを使用するのが最も一般的です。リバース プロキシを使用するとうまくいくと思います。

これは私の推奨構成です。

    <VirtualHost *:80>
        ServerName localhost

        ProxyRequests Off
        ProxyVia Off
        ProxyPreserveHost On

        <Proxy *>
              Order deny,allow
              Allow from all
        </Proxy>

        <Location "/">
            AuthType Basic
            AuthName "Gerrit Code Review"
            AuthBasicProvider file
            AuthUserFile /usr/local/apache/passwd/passwords
            Require valid-user
        </Location>

        AllowEncodedSlashes On
        ProxyPass /r http://localhost:8081/r nocanon
    </VirtualHost>

もちろん、gerrit.config を修正することを忘れないでください。canonicalWebUrl は、apache が gerrit を見つけるために使用するものではなく、アドレス バーに入力するものです。

[gerrit]
    basePath = git
    canonicalWebUrl = http://localhost:8082/r

Apache のデフォルト ページが表示されないようにするには、ブラウザをサブ パスにリダイレクトする index.php をルート フォルダに追加します。

<?php
    header('Location: http://localhost:8082/r/');
?>
于 2013-08-14T01:16:39.413 に答える