步驟2:CentOS7.5基于docker安裝nginx

1. 查看docker已經(jīng)下載的(已有的)鏡像

請忽略我已下載好的nginx鏡像

image.png

2. 去官方公有倉庫查詢nginx鏡像

其中第一個就是nginx官網(wǎng)鏡像,且STARS最多,我們這次就用這個

image.png

3. 拉取該鏡像

因?yàn)槲抑袄∵^,所以后面的輸出和第一次拉取的輸出不是太一致

image.png

4. 再次查看本地鏡像

此時,就看到本地有了該鏡像

image.png

5. 啟動一下該鏡像,使用nginx服務(wù),代理本機(jī)8080端口(測試是不是好使)

-d: 后臺運(yùn)行
-p: 端口映射 冒號前是本機(jī)端口,冒號后是容器端口

image.png

訪問本機(jī)ip:8080 即可訪問該頁面,代表nginx啟動成功

image.png

6.關(guān)閉容器

docker stop XXXXX(容器id前幾位)

image.png

not end

至此 簡單的docker安裝nginx并啟動算是成功了,接下來就會產(chǎn)生一個疑問,如果我想修改nginx的配置怎么辦,我想更改nginx中的資源文件怎么辦?接下來給出一個最實(shí)用的辦法,就是將容器中的目錄和本機(jī)目錄做映射,以達(dá)到修改本機(jī)目錄文件就影響到容器中的文件。

1.本機(jī)創(chuàng)建實(shí)例文件夾

/home文件夾下新建mutou文件夾,木頭文件夾下新建nginx文件夾,nginx文件夾下新建conf.d文件夾,html文件夾,大致結(jié)構(gòu)如下:

/home
    |---mutou
           |----nginx
                  |----conf.d
                  |----html

2. 在conf.d文件夾下新建default.conf文件,內(nèi)容如下:

server {
    listen       80;
    server_name  localhost;
    # 原來的配置,匹配根路徑
    #location / {
    #    root   /usr/share/nginx/html;
    #    index  index.html index.htm;
    #}
    # 更該配置,匹配/路徑,修改index.html的名字,用于區(qū)分該配置文件替換了容器中的配置文件
    location / {
        root   /usr/share/nginx/html;
        index  index-test.html index.htm;
    }
}

3.在html中編寫index-test.html,用以判斷文件夾映射成功,內(nèi)容如下:

<html>
  <body>
    <h2>it is html1</h2>
  </body>
</html>

4. 啟動nginx(8080),映射路徑

命令比較長,其實(shí)就是多加了兩個參數(shù),-v,-v的意思就是冒號前面代表本機(jī)路徑,冒號后面代表容器內(nèi)的路徑,兩個路徑進(jìn)行了映射,本機(jī)路徑中的文件會覆蓋容器內(nèi)的文件。
nginx容器內(nèi)的一些文件位置:
日志位置:/var/log/nginx/
配置文件位置:/etc/nginx/
項(xiàng)目位置:/usr/share/nginx/html

啟動代碼如下:

docker run -d -p 8080:80 -v /home/mutou/nginx/conf.d:/etc/nginx/conf.d  -v /home/mutou/nginx/html:/usr/share/nginx/html nginx
image.png

5. 驗(yàn)證

此時訪問ip:8080,發(fā)現(xiàn)展示的不是nginx的默認(rèn)頁面了,而是我們新加入的頁面,這樣就證明我們兩個-v映射的文件夾都起作用了。

image.png

6. 開始反向代理

此時靜態(tài)頁面網(wǎng)站已經(jīng)部署上了,但是還是會顯示一個端口8080出來,就十分不爽,怎么把端口干掉呢?而是換成XXXXX.com/demo1 或者 XXXXX.com/demo2這種效果呢?下面使用nginx的反向代理實(shí)現(xiàn)。

7. 增加文件夾,達(dá)到下面的效果

/home
    |---mutou
           |----nginx
                  |----conf.d
                  |----html
                  |----conf.d2

我們在conf.d2中配置另一個nginx容器的配置文件,文件內(nèi)容如下:

server {
    listen       80;
    server_name  localhost;
    location /demo1 {
        # 在該位置配置反向代理,將ip/demo1請求攔截,發(fā)送給8080端口,如果不是本機(jī)請使用公網(wǎng)ip
        proxy_pass   http://你的剛才的ip地址:8080/;
    }
}

8. 再啟動一個nginx(80),專門作為反向代理映射,將本機(jī)80端口代理到nginx的80端口上,并映射兩端的配置文件地址。

docker run -d -p 80:80 -v /home/mutou/nginx/conf.d2:/etc/nginx/conf.d nginx

此時 訪問 ip/demo1 即可映射到了ip:8080上,成功完成反向代理。


image.png

9.拓展

當(dāng)有了反向代理后,自然而然就引出了負(fù)載均衡,下面簡單實(shí)現(xiàn)負(fù)載均衡的效果,實(shí)現(xiàn)該效果再添加一個nginx,所以要增加一個文件夾。

/home
    |---mutou
           |----nginx
                  |----conf.d
                  |----html
                  |----conf.d2
                  |----html3

html3中的代碼如下:

<html>
  <body>
    <h2>it is html3</h2>
  </body>
</html>

10. 啟動nginx(8081)

啟動命令如下:

docker run -d -p 8081:80 -v /home/mutou/nginx/conf.d:/etc/nginx/conf.d  -v /home/mutou/nginx/html3:/usr/share/nginx/html nginx

11. 訪問ip:8081

image.png

12.配置負(fù)載均衡,訪問ip/demo1時,平均分發(fā)到8080端口和8081端口上,即it is html1it is html3間接出現(xiàn)。

配置負(fù)載均衡,那就是配置在第二次的nginx上,就是反向代理的nginx上,我們?nèi)onf.d2文件夾下,修改default.conf文件,如下:

upstream group1{
    server 你的剛才的ip地址:8080;
    server 你的剛才的ip地址:8081;
}

server {
    listen       80;
    server_name  localhost;
    location /demo1 {
        proxy_pass   http://group1/;
    }
}

此時,查看所有運(yùn)行中的docker容器:docker ps

image.png

然后重啟該容器,docker restart 容器id

13. 查看效果

訪問ip/demo1,每次刷新頁面,頁面都會在html1和html3中進(jìn)行切換,此時負(fù)載均衡的效果就實(shí)現(xiàn)了。

https://raw.githubusercontent.com/xicunyang/images/master/change-page.gif

14. 配置負(fù)載均衡的權(quán)重

可以使用下面的配置修改兩個端口的權(quán)重(即誰被訪問的概率大)

upstream group1{
    server 你的剛才的ip地址:8080 weight=1;
    server 你的剛才的ip地址:8081 weight=10;
}

server {
    listen       80;
    server_name  localhost;
    location /demo1 {
        proxy_pass   http://group1/;
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容