Nginx is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoevlinux
相信nginx你们也不陌生,大部分状况下都是在服务器中直接安装Nginx代理,可是现在Docker当道,如何结合Docker的容器化优点和Nginx的反向代理和域名设别?nginx
下面利用一个Demo,搭建一组服务git
利用Nginx容器内联到Ghost,转发,有如下优势:github
放出Github地址: docker-nginx-demodocker
须要准备Docker环境:ubuntu
demo的文件结构:api
- docker-compose.yml //docker-compose所需的文件,用于描述全部应用的配置信息 - nginx - Dockerfile - sites-enabled - default //nginx容器的配置文件,用于配置如何链接并解析其余的容器
docker-compose.yml:浏览器
version: "2" services: ghost: image : ghost restart: always container_name: ghost nginx-host: build: ./nginx restart: always ports: - "80:80" links: - ghost container_name: nginx-host
注意: links节点是内联其余的容器,该处定义了两个容器,一个是Ghost,一个是Nginx,Nginx容器是基于./nginx文件夹进行build的,端口只须要开通80指向nginx容器便可,其余的所有有nginx负责转发服务器
Dockerfile:ui
FROM tutum/nginx ADD sites-enabled/ /etc/nginx/sites-enabled
sites-enabled/default:
server { #listen 443; listen 80; server_name blog.kelvv.com #ssl on; access_log /var/log/nginx/api-dev.log; error_log /var/log/nginx/api-dev.error.log; location / { proxy_pass http://ghost:2368; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 150; proxy_send_timeout 100; proxy_read_timeout 100; proxy_buffers 4 32k; client_max_body_size 8m; client_body_buffer_size 128; } }
注意:该处的ghost就是刚才docker-compose文件内的links中的关联 , server_name为域名
$ cd docker-nginx-demo $ docker-compose up -d
这个时候在浏览器中输入 域名就能够自动链接到Ghost ,服务器无污染
最好是使用一个端口,而后全部应用都是经过80端口链接服务器,经过域名区分不一样应用。 还有一种方式就是使用多个端口,不一样端口不一样应用,这就须要在docker-compose.yml中开放多个端口,而且在nginx配置文件中配置多份server用于相应。