From 0df41a640558b013375b650e97a55c9d59fc2e29 Mon Sep 17 00:00:00 2001 From: Maksym Pavlenko Date: Fri, 20 Jan 2017 19:22:02 -0800 Subject: [PATCH] Add nginx container --- src/Podsync/Dockerfile | 4 ---- src/Podsync/Startup.cs | 7 +++++++ src/Podsync/docker-compose.yml | 14 ++++++++++---- src/Podsync/nginx.conf | 14 ++++++++++++++ src/Podsync/project.json | 1 + 5 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 src/Podsync/nginx.conf diff --git a/src/Podsync/Dockerfile b/src/Podsync/Dockerfile index 91c9359..70780cb 100644 --- a/src/Podsync/Dockerfile +++ b/src/Podsync/Dockerfile @@ -1,13 +1,9 @@ FROM microsoft/aspnetcore:1.0.3 -ARG PORT=56247 ARG PUBLISH_DIR="bin/Publish" WORKDIR /app -ENV ASPNETCORE_URLS http://+:$PORT -EXPOSE $PORT - COPY $PUBLISH_DIR . RUN apt-get update && \ diff --git a/src/Podsync/Startup.cs b/src/Podsync/Startup.cs index bde5058..2234cc1 100644 --- a/src/Podsync/Startup.cs +++ b/src/Podsync/Startup.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http.Authentication; +using Microsoft.AspNetCore.HttpOverrides; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; @@ -72,6 +73,12 @@ namespace Podsync loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); + // See https://docs.microsoft.com/en-us/aspnet/core/publishing/linuxproduction + app.UseForwardedHeaders(new ForwardedHeadersOptions + { + ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto + }); + if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); diff --git a/src/Podsync/docker-compose.yml b/src/Podsync/docker-compose.yml index 98155fc..07860f5 100644 --- a/src/Podsync/docker-compose.yml +++ b/src/Podsync/docker-compose.yml @@ -6,12 +6,11 @@ services: build: context: . dockerfile: Dockerfile - args: - - PORT=80 restart: always ports: - - 80:80 + - 5001 environment: + - ASPNETCORE_URLS=http://*:5001 - Podsync:RedisConnectionString=redis env_file: - ~/podsync.env @@ -20,4 +19,11 @@ services: command: redis-server --appendonly yes restart: always volumes: - - /data/redis:/data \ No newline at end of file + - /data/redis:/data + nginx: + image: nginx + restart: always + ports: + - 80:80 + volumes: + - ./nginx.conf:/etc/nginx/conf.d/default.conf \ No newline at end of file diff --git a/src/Podsync/nginx.conf b/src/Podsync/nginx.conf new file mode 100644 index 0000000..39c7783 --- /dev/null +++ b/src/Podsync/nginx.conf @@ -0,0 +1,14 @@ +server { + listen 80; + + gzip on; + + location / { + proxy_pass http://app:5001; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection keep-alive; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + } +} \ No newline at end of file diff --git a/src/Podsync/project.json b/src/Podsync/project.json index 1d03593..d9b9dc5 100644 --- a/src/Podsync/project.json +++ b/src/Podsync/project.json @@ -6,6 +6,7 @@ "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0", "Microsoft.AspNetCore.Authentication.OAuth": "1.0.0", "Microsoft.AspNetCore.Diagnostics": "1.0.0", + "Microsoft.AspNetCore.HttpOverrides": "1.0.0", "Microsoft.AspNetCore.Mvc": "1.0.0", "Microsoft.AspNetCore.Razor.Tools": { "version": "1.0.0-preview2-final",