docker搭建nginx 配置mysql反向代理
背景:應用和資料庫裝在兩個伺服器,資料庫的那個伺服器不能外網訪問,所以在能外網訪問的應用伺服器上配了個mysql反向代理,把mysql埠映射出來,在這記錄一下安裝配置過程,以及中間所遇到的問題。
docker安裝nginx
1、檢視可用的nginx版本
docker search nginx
2、取最新的nginx安裝
docker pull nginx:latest
3、檢視docker 映象是都有nginx
docker images
4、執行nginx
$ docker run --name nginx -p 8080:80 -d nginx
nginx :容器名稱
8080:本地埠
80:容器內部的80埠
-d:nginx: 設定容器在後臺一直執行
5、檢視nginx是否啟動
docker ps
檢視所有正在執行的容器
docker ps -l
檢視最近一次執行的容器
docker ps | grep nginx
利用管道符查詢
6、進入容器
首先檢視啟動容器的 CONTAINER ID
docker ps
然後輸入 docker exec -it CONTAINER ID bash
命令進入容器,此處 CONTAINER ID為上邊查詢出的。
7、修改nginx配置檔案
nginx.conf配置檔案在 /etc/nginx/ 下面,但是你使用vim nginx.conf
或者vi nginx.conf
會發現vi或者vim命令沒有用,解決辦法:apt-get update
apt-get install vim
8、容器重啟
docker restart nginx
此處應注意 如果你要重新定義埠對映,還是想起nginx這個名字的話 在停止容器的同時應該docker rm nginx
,將nginx這個name移除 否則會報錯。
9、埠開啟
防火牆開啟埠,安全組放開埠。
10、nginx主機配置檔案掛載
docker run --name nginx -p **8089:80** -v **/home/inspur/docker-nginx/nginx.conf**:/etc/nginx/nginx.conf -v **/home/inspur/docker-nginx/log**:/var/log/nginx -v **/home/inspur/docker-nginx/conf.d/default.conf**:/etc/nginx/conf.d/default.conf -d nginx
加粗的幾個地方是需要注意的點
--name 給你啟動的容器起個名字,以後可以使用這個名字啟動或者停止容器
-p 對映埠,將docker宿主機的8089埠和容器的80埠進行繫結
-v 掛載檔案用的,第一個-v 表示將你本地的nginx.conf覆蓋你要起啟動的容器的nginx.conf檔案,第二個表示將日誌檔案進行掛載,就是把nginx伺服器的日誌寫到你docker宿主機的/home/docker-nginx/log/下面
第三個-v 表示的和第一個-v意思一樣的。
-d 表示啟動的是哪個映象
nginx配置mysql反向代理
vim nginx.conf
新增如下配置檔案
stream {
upstream cloudsocket {
hash $remote_addr consistent;
server 192.168.0.3:3306 weight=5 max_fails=3 fail_timeout=30s;
}
server {
listen 3306;#資料庫伺服器監聽埠
proxy_connect_timeout 10s;
proxy_timeout 300s;#設定客戶端和代理服務之間的超時時間,如果5分鐘內沒操作將自動斷開。
proxy_pass cloudsocket;
}
}
注意stream 與http同級 不要寫在http裡邊。
然後重啟容器
1. docker stop nginx
2. docker rm nginx
3. docker run --name nginx -p 3306:3306 -v /home/inspur/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/inspur/docker-nginx/log:/var/log/nginx -v /home/inspur/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx
記得開啟3306 埠哦