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用於相應。