- CentOS 7
Eu tenho um contêiner Docker proxy Nginx simples ouvindo na porta 80. Aqui está o Dockerfile:
FROM centos:7MAINTAINER Brian Ogden# Not currently being used but may come in handyARG ENVIRONMENTRUN yum -y update && \ yum clean all && \ yum -y install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm \ yum -y makecache && \ yum -y install nginx-1.12.0 wget# Cleanup some default NGINX configuration files we don’t needRUN rm -f /etc/nginx/conf.d/default.confCOPY /conf/proxy.conf /etc/nginx/conf.d/proxy.confCOPY /conf/nginx.conf /etc/nginx/nginx.confCMD ["nginx"]
E para este Proxy Nginx aqui está o meu nginx.conf:
daemon off;user nginx;worker_processes 2;error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;events { worker_connections 1024; use epoll; accept_mutex off;}http { include /etc/nginx/mime.types; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 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; client_max_body_size 300m; client_body_buffer_size 300k; large_client_header_buffers 8 64k; gzip on; gzip_http_version 1.0; gzip_comp_level 6; gzip_min_length 0; gzip_buffers 16 8k; gzip_proxied any; gzip_types text/plain text/css text/xml text/javascript application/xml application/xml+rss application/javascript application/json; gzip_disable "MSIE [1-6]\."; gzip_vary on; include /etc/nginx/conf.d/*.conf;}
E aqui está minha configuração de proxy:
upstream accountstaging { server 127.0.0.1:5023;}server { listen 80; server_name account.staging.mysite.com; location / { proxy_pass http://accountstaging; proxy_redirect off; proxy_set_header Host $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-Host $server_name; }}
Minha configuração de proxy está ouvindo na porta 80 e tentando solicitar solicitações de account.staging.mysite.com para um contêiner Docker em execução no mesmo host Docker que o proxy Ngnix escuta na porta 5023.
Aqui está o meu docker-compose.yml para o meu proxy Nginx:
version: '3'services: reverseproxy: build: context: ./ dockerfile: docker/Dockerfile image: tsl.devops.reverseproxy.image container_name: tsl.devops.reverseproxy.container ports: - "80:80"
Aqui está o docker-compose.yml para este contêiner Docker ouvindo na porta 5023: versão: '3'
services: apistaging: build: context: ./ dockerfile: docker/staging/Dockerfile image: tsl.api.example.image container_name: tsl.api.example.container ports: - "127.0.0.1:5023:80"
O Dockerfile realmente não importa muito para a minha pergunta, mas aqui está de qualquer maneira:
FROM tsl.devops.dotnetcore.base.image:2MAINTAINER Brian OgdenWORKDIR /appCOPY ./src/Tsl.Example/bin/Release/netcoreapp2.0/publish .ENTRYPOINT ["dotnet", "Tsl.Example.dll"]
Eu segui exemplo para configurar meu proxy.
Eu já fiz uma pergunta relacionada em fóruns Stackexchange aqui e aqui. Esta pergunta eu refinei e simplifiquei o cenário para um simplesmente proxy encaminhando uma solicitação para um contêiner Docker ouvindo na porta 5023.
Como minha imagem base é CentOS, segui isto aqui para certificar-se de SELinux está permitindo para a frente ao porto 5023