簡體   English   中英

Nginx Docker 400錯誤請求

[英]Nginx Docker 400 Bad Request

我目前正在嘗試將nexus托管為組織內docker映像的私有注冊表。 我的nginx配置如下。

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 box.company.net;  ### Nexus Server
            keepalive_timeout 60;

            ssl on;
            ssl_certificate /etc/ssl/certs/nexus.crt;
            ssl_certificate_key /etc/ssl/certs/nexus.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://box.company.net: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://box.company.net:4444/;
                    proxy_read_timeout      90;
        }
    }

已在具有https端口6666的nexus(在端口4444中運行)中配置了托管的docker repo。

目前,我們能夠登錄到docker Registry。

[test @ server〜] $ docker登錄-u admin -p admin123 box.company.net:6666登錄成功

但是,當我們嘗試將帶標簽的圖像推送到nexus托管的docker注冊表時,它會拋出400 Bad Request錯誤。

[test @ server〜] $ docker push box.company.net:6666/alpine推送引用存儲庫[box.company.net:6666/alpine] 3fb66f713c9f:正在准備解析HTTP 400響應正文的錯誤:無效字符'<'尋找值的開頭:“ \\ n \\ n \\ n \\ n 400-Nexus Repository Manager \\ n \\ n \\ n \\ n \\ n(新圖片).src = \\” https://box.company.net:6666 /favicon.ico?3.2.1-01\\"</script>\\n \\ n https://box.company.net:6666 / favicon-32x32.png?3.2.1-01 \\“ size = \\” 32x32 \\“> \\ n https://box.company.net:6666 / safari-pinned-tab.svg?3.2.1-01 \\” color = \\“#5bbad5 \\”> \\ n https://box.company .net:6666 / favicon-16x16.png?3.2.1-01 \\“ size = \\” 16x16 \\“> \\ n https://box.company.net:6666 / favicon.ico?3.2.1-01 \\ “> \\ n https://box.company.net:6666/mstile-144x144.png?3.2.1-01\\">\\n \\ n \\ n https://box.company.net:6666/static/ css / nexus-content.css?3.2.1-01 \\“ /> \\ n \\ n \\ n \\ n https://box.company.net:6666\\">\\n \\ n https://box.company .net:6666 / static / images / nexus.png?3.2.1-01 \\“ /> \\ n \\ n \\ n \\ n Nexus Repository Manager \\ n \\ n \\ n OSS 3.2.1-01 \\ n \\ n \\ n \\ n \\ n \\ n \\ n \\ n https:// bo x.company.net:6666/static/rapture/resources/icons/x32/exclamation.png?3.2.1-01\\"/>\\n錯誤400 \\ n錯誤的請求\\ n \\ n \\ n \\ n
該URL不支持HTTP方法POST \\ n \\ n
\\ n \\ n \\ n \\ n \\ n“

我是否缺少一些重要的Nginx配置? 還是我的要求格式錯誤。

它現在正在工作。 以下是我的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 box.company.net;
    location / {
          rewrite ^(.*) https://box.company.net$1 permanent;
    }
}

server {

    listen 443;
    server_name box.company.net;
    keepalive_timeout 60;
    ssl on;
    ssl_certificate /etc/ssl/certs/nexus.crt;
    ssl_certificate_key /etc/ssl/certs/nexus.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://box.company.net:8082;
      proxy_read_timeout      90;

    }
}

# correlates to your nexus http connector
server {

    listen 6666;
    server_name box.company.net;
    keepalive_timeout 60;
    ssl on;
    ssl_certificate /etc/ssl/certs/nexus.crt;
    ssl_certificate_key /etc/ssl/certs/nexus.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://box.company.net:4444;
        }
        if ($request_method = GET) {
                proxy_pass              http://box.company.net:5555;
        }
      proxy_read_timeout      90;
    }
}

推送圖像時缺少名稱空間。

查看文檔( https://books.sonatype.com/nexus-book/3.0/reference/docker.html#_accessing_repositories ):

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

你可以嘗試一下

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM