2016-11-29 17 views
2

Apacheの背後にあるArtifactoryで動作するスコープ付きnpmパッケージを取得しようとしています。私はArtifactoryにスコープパッケージを公開し、npm-localリポジトリに次のパスを作成します。@scopename/packagename/-/@scopename/packagename-version.tgzArtifactoryからスコープ付きnpmパッケージをインストールする

このパッケージをインストールしようとすると問題が発生します。私は404 Not Found: @scopename/packagenameを得る。デバッグログを見ると、スラッシュのエンコーディングと関係があることがわかります。

22 http request GET https://artifacts.company.com/artifactory/api/npm/npm-local/@scopename%2fpackagename 
23 http 404 https://artifacts.company.com/artifactory/api/npm/npm-local/@scopename%2fpackagename 

私はオンラインドキュメントに従っています。私はAllowEncodedSlashes NoDecodeを仮想ホストに追加し、org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=trueをtomcatのcatalina.propertiesファイルに追加しました。

何か不足していますか?

答えて

2

これはリバースプロキシの問題のようです。あなたのrequest.logを確認してください。リクエストが来る場合は、/ api/npm/npm-group/@ angular%2Fcoreではなく、/ api/npm/npm-group/@ angular/coreとなります。これはリバースプロキシで対処する必要があるものです。

あなたは二つのことを変更する必要があります。 設定org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH =真 を実装し、/etc/nginx/conf.dにproxy_pass変数からコンテキストルートの削除/default.conf

+0

回答ありがとうございます。私はnginxではなくapacheを使用しています。 "/"または "%2F"で戻ってくるはずですか? –

+0

"/"として返信する必要があります Nginxを使用していない場合でも、Apacheに同様の設定があるかどうかを確認してください。あなたはApacheからアーティファクトを実行しているかもしれませんが、ArtifactoryもデフォルトではNginxをリバースプロキシとして使用しています。 Apacheが両方を処理している場合は、同様の設定があるかどうかを確認してください。 – imthinhvu

+0

%2Fのように見えるはずです –

関連する問題