- CentOS 7
Saya memiliki wadah Docker proxy Nginx sederhana yang mendengarkan pada port 80. Berikut adalah 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"]
Dan untuk Proxy Nginx ini di sini adalah nginx saya.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;}
Dan inilah konfigurasi proxy saya:
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; }}
Konfigurasi proxy saya mendengarkan pada port 80 dan mencoba meminta permintaan dari account.staging.mysite.com ke wadah Docker yang berjalan pada Host Docker yang sama dengan proxy Ngnix yang mendengarkan pada port 5023.
Ini adalah docker-compose saya.yml untuk proxy Nginx saya:
version: '3'services: reverseproxy: build: context: ./ dockerfile: docker/Dockerfile image: tsl.devops.reverseproxy.image container_name: tsl.devops.reverseproxy.container ports: - "80:80"
Berikut adalah docker-compose.yml untuk wadah Docker ini mendengarkan pada port 5023: versi: '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"
Dockerfile tidak terlalu penting untuk pertanyaan saya, tetapi ini dia:
FROM tsl.devops.dotnetcore.base.image:2MAINTAINER Brian OgdenWORKDIR /appCOPY ./src/Tsl.Example/bin/Release/netcoreapp2.0/publish .ENTRYPOINT ["dotnet", "Tsl.Example.dll"]
Saya mengikuti contoh ini untuk setup proxy saya.
Saya sebelumnya telah mengajukan pertanyaan terkait di forum Stackexchange di sini dan di sini. Pertanyaan ini saya telah disempurnakan dan disederhanakan skenario untuk hanya proxy forwarding permintaan untuk satu kontainer Docker mendengarkan pada port 5023.
Karena gambar dasar saya adalah CentOS, saya telah mengikuti ini di sini untuk memastikan SELinux memungkinkan maju ke port 5023