การทำ 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