2017-06-07 19 views
1

現在、私の組織内のドッカーイメージのプライベートレジストリとしてnexusをホストしようとしています。私のnginxの設定は以下の通りです。 Nginx Docker 400 Bad Request

user nginx; 
worker_processes 1; 

error_log /var/log/nginx/error.log warn; 
pid  /var/run/nginx.pid; 


events { 
    worker_connections 1024; 
} 


http { 
    include  /etc/nginx/mime.types; 
    default_type application/octet-stream; 

    log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
         '$status $body_bytes_sent "$http_referer" ' 
         '"$http_user_agent" "$http_x_forwarded_for"'; 

    access_log /var/log/nginx/access.log main; 

    sendfile  on; 
    #tcp_nopush  on; 

    keepalive_timeout 65; 

    #gzip on; 

    server { 

      listen 6666; ### Docker Hosted Repo HTTPS port 
      server_name server408.int.org.com; ### Nexus Server 
      keepalive_timeout 60; 

      ssl on; 
      ssl_certificate /etc/ssl/certs/clsanexus.crt; 
      ssl_certificate_key /etc/ssl/certs/clsanexus.key; 
      ssl_ciphers HIGH:!kEDH:!ADH:!MD5:@STRENGTH; 
      ssl_session_cache shared:TLSSSL:16m; 
      ssl_session_timeout 10m; 
      ssl_prefer_server_ciphers on; 

      client_max_body_size 0; 
      chunked_transfer_encoding on; 

      location /v2/ { 


        if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go).*$") { 
        return 404; 
        } 
        error_log    /var/log/nginx/error.log debug; 
        access_log    /var/log/nginx/docker.log; 
        proxy_set_header  Host $http_host; 
        proxy_set_header  X-Real-IP $remote_addr; 
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_set_header  X-Forwarded-Proto "https"; 
        proxy_pass    http://server408.int.org.com:4444/; 
        proxy_read_timeout  900; 
     } 

      location/{ 

        error_log    /var/log/nginx/error.log debug; 
        access_log    /var/log/nginx/docker.log; 
        proxy_set_header  Host $http_host; 
        proxy_set_header  X-Real-IP $remote_addr; 
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_set_header  X-Forwarded-Proto "https"; 
        proxy_pass    http://server408.int.org.com:4444/; 
        proxy_read_timeout  90; 
     } 
    } 

がhttps

6666.ポートでネクサス(ポート4444上で実行されている)内でホストされたドッキングウィンドウのレポを設定した現在では、レジストリをドッキングウィンドウにはログインすることができます。

[dockertest @ vserver446〜] $]ドッキングウィンドウのログイン-u管理者-p admin123 server408.int.org.com:6666ログインは

を成功しかし、我々はネクサスにタグ付けされた画像をプッシュしようとすると、ホストドッカーレジストリは、400 Bad Requestエラーをスローします。

[dockertest @ server446〜] $]ドッキングウィンドウのプッシュserver.int.org.com:6666/alpine プッシュが 3fb66f713c9fリポジトリ[server408.int.org.com:6666/alpine]を参照:準備\\ n \ n \ n \ n 400 - Nexusリポジトリ マネージャ\ n \ n \ n \ n \ n 文字 '<'の値の先頭を探しています。 (新しい イメージ) .src = \ "https://server408.int.org.com:6666/favicon.ico?3.2.1-01 \" </script> \ n \ n https://vklnld908.int.clsa.com :6666/favicon-32x32.png?3.2.1-01 \ " sizes = \" 32x32 \ "> \ n https://server408.int.org.com:666 6/safari-pinned-tab.svg?3.2.1-01 \ "color = \"#5bbad5 \ "> \ n https://server408.int.org.com:6666/favicon-16x16.png?3.2。 1-01 \ " sizes = \" 16x16 \ "> \ nhttps://server408.int.org.com:6666/favicon.ico?3.2.1-01\">¥n https:// server408 .int.org.com:6666/mstile-144x144.png?3.2.1-01 \ "> \ n \ n \ n https://vklnld908.int.clsa.com:6666/static/css/nexus-content .css?3.2.1-01 \ "\> \ n \ n \ n \ n https://server408.int.org.com:6666\"> \ n \ n https://server408.int.org com:6666/static/images/nexus.png?3.2.1-01 \ "/> \ n \ n \ n \ n Nexusリポジトリマネージャ\ n \ n \ n OSS 3.2.1-01 \ n \ n \ n \ n \ n \ n \ n \ n https://server408.int.org.com:6666/static/rapture/resources/icons/x32/exclamation.png?3.2.1-01 \ "/> \ n エラー400 \ n不正なリクエスト\ n \ n \ n \ n
HTTPメソッドPOSTはこのURLでサポートされていません\ n \ n
\ N \ N \ N \ N \ n」は

は、私はいくつかの重要なnginxの設定をしないのですか?あるいは、私の要求が不正になってしまった。

+0

おそらくhttps://serverfault.comがこのような質問をするのに適しています。 – reporter

+0

ところで:エラーメッセージの最後に "エラー400 \ n不良リクエスト\ n \ n \ n \ n \ n HTTPメソッドPOSTはこのURLでサポートされていません"を見つけることができます。多分、これはあなたを正しい方向に導くでしょう。 – reporter

+0

しかし、画像を投稿するURLを指定していません。 –

答えて

0

そのとそれを試みることができる

docker <command> <nexus-hostname>:<repository-port>/<namespace>/<image>:<tag> 

は、ドキュメント(https://books.sonatype.com/nexus-book/3.0/reference/docker.html#_accessing_repositories)に見てみましょう。以下は私のnginxの設定です。

server { 

    proxy_send_timeout 120; 
    proxy_read_timeout 300; 
    proxy_buffering off; 
    tcp_nodelay  on; 

    server_tokens off; 
    client_max_body_size 1G; 

    listen 80; 
    server_name server908.int.org.com; 
    location/{ 
      rewrite ^(.*) https://server908.int.org.com$1 permanent; 
    } 
} 

server { 

    listen 443; 
    server_name server908.int.org.com; 
    keepalive_timeout 60; 
    ssl on; 
    ssl_certificate /etc/ssl/certs/orgnexus.crt; 
    ssl_certificate_key /etc/ssl/certs/orgnexus.key; 
    ssl_ciphers HIGH:!kEDH:!ADH:!MD5:@STRENGTH; 
    ssl_session_cache shared:TLSSSL:16m; 
    ssl_session_timeout 10m; 
    ssl_prefer_server_ciphers on; 

    location/{ 

     proxy_set_header  Host $http_host; 
     proxy_set_header  X-Real-IP $remote_addr; 
     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header  X-Forwarded-Proto "https"; 
     proxy_pass    http://server908.int.org.com:8082; 
     proxy_read_timeout  90; 

    } 
} 

# correlates to your nexus http connector 
server { 

    listen 6666; 
    server_name server908.int.org.com; 
    keepalive_timeout 60; 
    ssl on; 
    ssl_certificate /etc/ssl/certs/orgnexus.crt; 
    ssl_certificate_key /etc/ssl/certs/orgnexus.key; 
    ssl_ciphers HIGH:!kEDH:!ADH:!MD5:@STRENGTH; 
    ssl_session_cache shared:TLSSSL:16m; 
    ssl_session_timeout 10m; 
    ssl_prefer_server_ciphers on; 
    client_max_body_size 1G; 
    chunked_transfer_encoding on; 

    ### Block for Search,Pull,Push of Docker Images via Nexus Hosted Repo #### 
    location/{ 

     access_log    /var/log/nginx/docker.log; 
     proxy_set_header  Host $http_host; 
     proxy_set_header  X-Real-IP $remote_addr; 
     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 

     if ($request_method !~* GET) { 
       proxy_pass    http://server908.int.org.com:4444; 
     } 
     if ($request_method = GET) { 
       proxy_pass    http://server908.int.org.com:5555; 
     } 
     proxy_read_timeout  90; 
    } 
} 
0

イメージをプッシュするときに名前空間が不足しています。あなたが今取り組んで

docker push server.int.org.com:6666/alpine/alpine 
+0

まだ同じエラー。 nginxの設定は正しいですか? –

関連する問題