การทำ reverse proxy server nginx

– เริ่มต้นจากการสร้าง Dockerfile
FROM nginx

RUN apt-get update -y

# Install certbot for letsencrypt
RUN echo "deb http://deb.debian.org/debian stretch-backports main contrib non-free" >> /etc/apt/sources.list
RUN echo "deb-src http://deb.debian.org/debian stretch-backports main contrib non-free" >> /etc/apt/sources.list
RUN apt-get -y update
#RUN apt-get -y install python-certbot-nginx -t stretch-backports
RUN apt-get -y install certbot python-certbot-nginx
RUN apt-get -y install cron
RUN apt-get -y install vim

# Define working directory.
WORKDIR /etc/nginx

# Define default command.


# Expose ports.
#EXPOSE 80
EXPOSE 443

#CMD ["/usr/sbin/nginx"]
– การสร้าง docker-compose.yml
version: "2"
  
services:
  reverseproxy:
    build:
      context: .
      dockerfile: ./Dockerfile
    volumes:
      - "./config/nginx.conf:/etc/nginx/nginx.conf"
      - "./certs:/etc/letsencrypt"
    restart: always
    ports:
      - "80:80"
      - "443:443"
    networks:
      - custom_network

networks:
  custom_network:
    external:
      name: nginx-network
– สร้างไฟล์ config/nginx.conf
events {
  worker_connections  4096;  ## Default: 1024
}

http {
  
    client_max_body_size 100M;

    upstream web {
        # change to real IP server
        server webwp;  # web container ที่เราต้องการชี้ไป
    }
   
    server {
            listen 80;
            #listen 443 ssl;

            server_name xxxxxxx.com;
            location / {
                proxy_pass         http://web;  # web container ที่เราต้องการชี้ไป
                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;

            }
     }

}
– การ Build Server
Run คำสั่ง 
- docker-compose build
- docker-compose up -d
Output 
proxy_reverseproxy_1   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:443->443/tcp,:::443->443/tcp, 0.0.0.0:80->80/tcp,:::80->80/tcp