4

私はfedoraサーバーを持っています。yumパッケージマネージャーを介してtomcatをインストールしました。次に、ネクサス戦争をwebappsフォルダーに展開しました。jsvcを使用してポート80でサーバーを実行しようとしましたが、機能しませんでした。ポートフォワーディングも使用できることを確認しました。最良の選択肢は何ですか?

編集1:httpd

私は3.8に従いました。sonatypedocからプロキシの背後でNexusを実行していると少し混乱します。httpdをインストールしました。次の構成があります。ここで、example.comは私のドメインです。

/etc/httpd/conf.d/nexus.conf

NameVirtualHost *:80

<VirtualHost *:80>

  ServerName example.com
  ProxyRequests Off

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

  ProxyPass /nexus/ http://localhost:8081/nexus/
  ProxyPassReverse /nexus/ http://localhost:8081/nexus/
  ProxyPreserveHost On

  <Location />
    Order allow,deny
    Allow from all
  </Location>

  ErrorLog logs/nexus/error.log
  CustomLog logs/nexus/access.log common
</VirtualHost>

/ home / guillaume / www / nexus / conf

# Jetty section
application-port=8081
application-host=0.0.0.0
nexus-webapp=${bundleBasedir}/nexus
nexus-webapp-context-path=/nexus

# Nexus section
nexus-work=${bundleBasedir}/../sonatype-work/nexus
runtime=${bundleBasedir}/nexus/WEB-INF
pr.encryptor.publicKeyPath=/apr/public-key.txt

アクセスしようとすると

  • http://localhost:8081/nexus/index.htmlすべてが機能します
  • http://localhost/nexus/index.htmlすべてが機能します
  • http://example.com/nexus/index.htmlハングするだけです(ポート80はファイアウォールで開いています)

    $ netstat -tulpn | grep:80

    tcp 0 0 ::: 80 ::: * LISTEN 3965 / httpd
    tcp 0 0 ::: 8081 ::: * LISTEN 3811 / java
    udp 0 0 0.0.0.0:803 0.0.0.0:* 1051 / rpc.statd

そのプロキシを機能させる方法についての手がかりはありますか?

編集2:nginx

私はエラーを見つけました、DNSは間違っていました:私のIPがあったときにnslookup example.com解決されましたx.x.x.xx.x.x.y

しかし、私はngix構成を楽しんだ

server {

        listen 80;
        server_name example.com;

        access_log off;
        error_log off;

        location / {
                proxy_pass      http://localhost:8081;
                proxy_redirect  off;

                #Proxy Settings
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }

        # would be a good idea to redirect static assets
}
4

3 に答える 3

6

authbindを使用してジョブを実行することができます(プロキシなしで)。ただし、nexusに使用するのは少し注意が必要です。nexusはJavaサービスラッパー(jsw)によって開始され、Javaサービスラッパー(jsw)は起動スクリプト(必要に応じて別のユーザーとして自分自身を呼び出す)によって開始されるためです。

解決策は次のとおりです(相対パスはネクサスホームディレクトリを基準にしています$NEXUS_HOME)。

  1. conf/nexus.propertiesセットで
application-port = 80
application-host = 0.0.0.0

(または必要なものは何でも)

  1. ログインシェル(!)を持つnexusの(システム)ユーザーを作成します。例:

    adduser --system --shell / bin / sh --no-create-home --group nexus
    (すべてのネクサスファイルを新しいユーザーに属するようにします。たとえばchown -R nexus:nexus .
    ログインシェルが必要です。bin/nexus呼び出しsu - $RUN_AS_USER ...があるため、ユーザーnexusは「ログイン」できる必要があります(実際にはそうではありません)。

  2. 新しいユーザーのユーザーIDを取得します:(id -u nexusそれがあったふりをしましょう108

  3. authbind構成ファイルを作成します/etc/authbind/byuid/108(ファイル名としてnexusユーザーのIDを使用します)。

0.0.0.0,80
::、80

IPとポートはで使用されているものと同じである必要がありますnexus.properties(手順1を参照)。IPv6ポートは、他の構成(Jettyから)に応じて、必要な場合と不要な場合があります。authbindで有効にしても安全です。

  1. 小さなヘルパースクリプト(jswに必要)を作成し、デフォルトの実行可能ファイルのパス(例/usr/local/bin/authbind-java)を入力します。
#!/ bin / sh
exec authbind java "$ @"

(によって、ファイルを実行可能にしますchmod +x /usr/local/bin/authbind-java

  1. jsw構成ファイルbin/jsw/conf/wrapper.confを編集し、設定を見つけwrapper.java.command(値として読み取る必要がjavaあります)、値をauthbind-java(作成したばかりのヘルパースクリプト)に置き換えます。

これで、ネクサスを開始する準備が整いました。nexusのホームディレクトリから:

RUN_AS_USER = nexus bin / nexus start

(または直接編集bin/nexusして設定し、呼び出す)RUN_AS_USER=nexusbin/nexus start

これで、Nexus(jettyサーバー)が起動、初期化され、最終的にポート80にバインドされますが、「非特権」ユーザーとして実行されますnexus


補足:ポート80をnexusにバインドしているため、おそらく独自の(仮想)ホストで実行されているため、独自のドメイン名(たとえば)を簡単に指定できますnexus.example.com。そうするとき、私/nexusはURIからプレフィックス(コンテキストパス)を取り除くことを好みます。入力を節約するために、それはすでにドメイン名にあります。ルートの下でネクサスを提供するには、(in )に設定nexus-webapp-context-pathします。リポジトリパスは、たとえば(ではなく)になります。/conf/nexus.propertieshttp://nexus.example.com/content/repositories/releaseshttp://nexus.example.com/nexus/content/repositories/releases

于 2015-05-14T16:59:41.660 に答える
4

ポート80でJavaアプリサーバーを実行するのは好きではありません。プロセスをrootとして実行する必要があります。

最善のアプローチは、Apache(またはNginx)をインストールし、nexusをリバースプロキシとして構成することです。これがどのように行われるかの詳細については、Nexusの本の関連セクションを読むことをお勧めします。

ノート

  • リバースプロキシを設定することには、他にも多くの利点があります。たとえば、メンテナンスのためにNexusを停止するたびに表示されるカスタム503エラーメッセージを設定できます。
于 2012-08-27T22:56:41.450 に答える
4

iptablesを使用してポートをリダイレクトするのはどうですか。
したがって、nexusは引き続きポート8080で実行されていますが、ポート80を介してアクセスすることもできます。

iptables -t nat -A PREROUTING -i <interface> -p tcp --dport 80 -j REDIRECT --to-port 8080

この設定の詳細については、(たとえば)https://www.systutorials.com/816/port-forwarding-using-iptables/を参照してください。

于 2014-06-25T07:39:42.040 に答える