Linux +Docker +Nginx 部署代理轉發初探


很多開發人員僅僅只會碼代碼,如果讓開發人員部署一些深入點的東西,或者做負載均衡等,很多開發人員估計就懵逼了,作為一個專業的開發還需要懂一些基本的運維知識;雖然說在互聯網行業中,中小企業都有一個牛逼的運維工程師,基本上也沒有什么開發人員的事情,所以很多開發人員僅僅知道nginx這個事情,但是不會用,下面我來講解下Nginx 服務的基本知識.

Nginx 基本概念

這里就不詳細說了,[請參考]

Docker 安裝部署Nginx

第一步先拉取Nginx最新版本鏡像

使用docker pull xxx 指令


docker pull nginx:latest

或者


docker pull nginx:指定版本號

第二步 可以先查看下本地鏡像

docker images 指令


docker images

//結果輸出如下

[root@10-10-165-57 logs]# docker images

REPOSITORY          TAG                IMAGE ID            CREATED            SIZE

docker.io/nginx    latest              568c4670fa80        3 weeks ago        109 MB

| 第三步 創建運行容器

這里我直接映射80端口,還沒有映射任務文件的情況


docker run -d -p 80:80 --name nginx docker.io/nginx

好了,這時候nginx 服務已經運行起來了,可以通過docker ps查看運行中的容器


[root@10-10-165-57 logs]# docker ps

CONTAINER ID        IMAGE              COMMAND                  CREATED            STATUS              PORTS                NAMES

34ae8c48da89        docker.io/nginx    "nginx -g 'daemon ..."  25 minutes ago      Up 13 minutes      0.0.0.0:80->80/tcp  nginx

以上已經運行了一個命名為nginx 的容器,現在可以訪問了

假設我的http://117.50.60.123/ 以及解析到我這台linux服務器中,則可以直接訪問http://117.50.60.123/ 得到界面如下

(https://note.youdao.com/yws/api/personal/file/WEB75fca319455efd463344a0c9b17675c0?method=download&shareKey=fedb7bb411c88a3b1c95b138a9dd061f)

好了現在nginx 已經部署完成

Docker Nginx 目前掛載映射

上面部署好Nginx后,還不夠,我們還需要做負載均衡以及代理轉發等相關配置,這個配置文件我們可以直接進入容器中配置,也可以把容器中的文件掛載映射到宿主機上,以方便進行配置

| 第一步,我們先進入容器中查看下nginx的目錄結構


[root@10-10-165-57 logs]# docker exec -it nginx /bin/bash

//輸入命令后進入容器的狀態

root@34ae8c48da89:/#

| 第二步,進入容器的nginx目錄中,並且查看目錄結構


//進入容器中的/etc/nginx 目錄中

root@34ae8c48da89:/etc/nginx# 

// 查看 /etc/nginx 中的文件結構

root@34ae8c48da89:/etc/nginx# ls -a

.  ..  conf.d  mime.types  nginx.conf

root@34ae8c48da89:/etc/nginx#

| nginx 目錄解析


|- conf.d  //nginx 配置文件 包含default.conf 的默認配置文件

|- mime.types //nginx代理的請求頭文件

|- nginx.conf //nginx 代理的入口配置文件,配置反向代理及負載均衡從這個文件開始

了解了nginx的配置目錄結構后,我們nginx的運行過程中有很多的訪問日志,這個日志文件記錄在哪里呢?我們可以先查看下nginx.conf 配置


//查看配置文件的指令 cat nginx.conf

root@34ae8c48da89:/etc/nginx# cat nginx.conf

user  nginx;

worker_processes  1;

error_log  /var/log/nginx/error.log warn;

pid        /var/run/nginx.pid;

events {

    worker_connections  1024;

}

http {

    include      /etc/nginx/mime.types;

    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;

    #tcp_nopush    on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;

}

root@34ae8c48da89:/etc/nginx#

從上面的配置文件中可以看到nginx 的日志文件在默認在/var/log/nginx的目錄中;現在我們以及搞清楚了兩個目錄文件/etc/nginx 和/var/log/nginx目錄結構,那我們需要把這兩個目錄文件掛載到宿主機下面,方便我們日后的配置及日志的查看工作

| 第三步,推出nginx 容器中


// exit 退出容器的命令

root@34ae8c48da89:/# exit

exit

[root@10-10-165-57 logs]#

| 第四部,創建宿主機的掛載目錄

創建nginx的目錄


[root@10-10-165-57 /]# mkdir /home/root/nginx

nginx目錄中創建日志文件目錄


[root@10-10-165-57 /]# mkdir /home/root/nginx/logs

| 第五步,創建容器掛載


docker run -d -p 80:8080 -v /home/root/nginx:/etc/nginx -v /home/root/nginx/logs:/var/log/nginx --name nginx docker.io/nginx

運行上面的掛載創建容器后會提示不能創建,主要由於之前我們創建了一個nginx的容器,占用了80端口導致,我們需要停止並且刪除之前創建的nginx容器

停止和刪除如下


docker stop nginx //停止運行的nginx容器

docker rm nginx //刪除nginx容器

//再創建新的nginx容器並且掛載到宿主機文件目錄中

docker run -d -p 80:8080 -v /home/root/nginx:/etc/nginx -v /home/root/nginx/logs:/var/log/nginx --name nginx docker.io/nginx

好了以上就把容器中的相關配置目錄和日志目錄掛載到宿主機文件目錄中了,掛載好后我們可以進入宿主機目錄創建我們自己的反響代理配置了,后面就不再描述,具體的反向代理及負載均衡相關配置詳解下回再詳細講解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM