簡體   English   中英

請求將nginx反向代理掛起到docker上的ASP.NET 5 Web應用程序

[英]Request hangs for nginx reverse proxy to an ASP.NET 5 web application on docker

我試圖讓nginx,ASP.NET 5,Docker和Docker Compose在我的開發環境中一起工作,但到目前為止我看不到它的工作原理。 是我現在的狀態,讓我在這里簡要解釋一下。

我有以下docker-compose.yml文件:

webapp:
  build: .
  dockerfile: docker-webapp.dockerfile
  container_name: hasample_webapp
  ports:
    - "5090:5090"

nginx:
  build: .
  dockerfile: docker-nginx.dockerfile
  container_name: hasample_nginx
  ports:
    - "5000:80"
  links:
    - webapp:webapp

docker-nginx.dockerfile文件:

FROM nginx
COPY ./nginx.conf /etc/nginx/nginx.conf

docker-webapp.dockerfile文件:

FROM microsoft/aspnet:1.0.0-rc1-update1

COPY ./WebApp/project.json /app/WebApp/
COPY ./NuGet.Config /app/
COPY ./global.json /app/
WORKDIR /app/WebApp
RUN ["dnu", "restore"]
ADD ./WebApp /app/WebApp/

EXPOSE 5090
ENTRYPOINT ["dnx", "run"]

nginx.conf文件:

worker_processes 4;

events { worker_connections 1024; }

http {
    upstream web-app {
        server webapp:5090;
    }

    server {
      listen 80;

      location / {
        proxy_pass http://web-app;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
      }
    }
}

一切都很好,當我運行docker-compose up ,它會啟動並運行兩個容器,這也很不錯。 從主機,當我點擊localhost:5000 ,請求只是掛起,當我終止請求時,nginx通過docker compose寫出一個日志,指示499 HTTP響應。

知道我在這里可能缺少什么嗎?

更新:

我在ASP.NET 5應用程序中添加了一些日志記錄,當我點擊localhost:5000時,我可以驗證請求是否正在發送到ASP.NET 5,但它 會立即終止, 從200響應中判斷出健康的響應。 然后,nginx坐在它上面我通過客戶端終止請求。

在此輸入圖像描述

這是Kestrel RC1中的已知錯誤: https//github.com/aspnet/KestrelHttpServer/issues/341

你可以通過強制Connection: keep-alive來解決它Connection: keep-alive

proxy_set_header Connection keep-alive;

暫無
暫無

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

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