1. 程式人生 > 其它 >docker搭建nginx 配置mysql反向代理

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 埠哦