簡體   English   中英

具有不同代理URL的相同位置Nginx

[英]Same location with different proxy urls nginx

我們正在嘗試通過nginx反向代理來獲得聯系,該反向代理充當docker映像的私有注冊表。 我們能夠執行所有操作,例如pull,search和tag,但不能推送到nexus Registry。

以下是location塊下的nginx配置。

    location ~ ^/(v1|v2)/
    {
            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:5555;
            proxy_read_timeout      90;
    }

我們能夠搜索和提取圖像。

但是通過推動,我們將面臨以下錯誤。

x.x.x.x - admin [23/Jun/2017:14:32:34 +0800] "POST /v2/fedora/apache/blobs/uploads/?from=fedora%2Fssh&mount=sha256%3Aacd6cf67daf4cd1fcff55ece5a906a45e1569b81271b80136a1f5fecfa4546ed HTTP/1.1" 404 717 "-" "docker/1.12.6 go/go1.7.4 kernel/3.10.0-514.10.2.el7.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/1.12.6 \x5C(linux\x5C))"

當我們嘗試使用代理_pass url作為http://box.company.net:4444時 ,我們能夠推送但無法提取圖像。

是否可以在nginx中在相同位置但針對不同請求方法傳遞兩個不同的proxy_pass URL。 任何幫助都將非常棒..謝謝

您可以使用ifmap指令來選擇后端端口。

請注意, 如果是Evil ,那當然不是您想要的。

location ~ ^/(v1|v2)/
{
    set $port 5555;
    if ($request_method = POST) {
        set $port 4444;
    }
    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:$port;
    proxy_read_timeout      90;
}

@sempasha:謝謝您的幫助。 稍微調整一下,它就對我有用。 以下是添加的位置塊以使其正常工作。

  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;

        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;
    }

暫無
暫無

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

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