docker下的nginx

00fa發表於2020-11-22

nginx

1 啟動nginx

#取出nginx容器預設配置檔案
mkdir -p /data/nginx/
docker run -d --name tmp-nginx-container nginx
docker cp tmp-nginx-container:/etc/nginx/nginx.conf /data/nginx/
docker cp tmp-nginx-container:/etc/nginx/conf.d /data/nginx/
docker cp tmp-nginx-container:/usr/share/nginx/html /data/nginx/

#再重新啟動一個nginx,並掛載資料
docker run -d --name nginx -p 80:80 \
  -e TZ=Asia/Shanghai \
  -v /usr/local/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
  -v /usr/local/docker/nginx/conf.d:/etc/nginx/conf.d \
  -v /usr/local/docker/nginx/html:/usr/share/nginx/html \
  -v /usr/local/docker/nginx/logs:/var/log/nginx \
  nginx


docker exec -it nginx /bin/bash  #進入nginx 

2 配置

容器內的配置檔案檔案位置在 /etc/nginx/nginx.conf

全域性塊

設定一些影響nginx伺服器整體執行的配置指令

比如work_processes 值越大,可以支援的併發處理量也越多

events塊

主要影響伺服器與使用者的網路連線

比如work_connections 1024; 表示每個work_processes 支援的最大連線數1024

http塊

包括代理,快取和日誌定義等絕大數功能都在這裡

3 反向代理

先執行tomcat,利用nginx進行轉發

docker run -d --name tomcat -d -p 8080:8080 tomcat:8.0.52
docker  inspect tomcat 

然後查其在docker內的地址

修改conf.d中的default.conf

然後訪問原nginx的埠(linux伺服器地址+80埠),就能轉發到tomcat去

要求訪問http://42.192.149.87/edu/a.html 到tomcat01

要求訪問http://42.192.149.87/vod/b.html 到tomcat02

4 負載均衡

3 分配策略

  1. 輪詢(預設)

  2. weight

    upstream server_ pool{
        server 192.168.5.21 weight=5;
        server 192.168.5.22 weight=10;
    }
    
  3. ip_hash

    根據hash,每個訪客固定訪問一個伺服器,可以解決session問題

    upstream server_ pool{
      ip_hash
        server 192.168.5.21 ;
        server 192.168.5.22 ;
    }
    
  4. fair

    根據伺服器的相應時間來分配

    upstream server_ pool{
        server 192.168.5.21 ;
        server 192.168.5.22 ;
        fair
    }
    

5 動靜分離

有兩種辦法,

靜態資源跟動態資源分開放在兩個伺服器上

靜態和動態一起放一起,根據訪問的字尾名來實現不同的轉發請求,可以設定expires可以設定瀏覽器快取過期時間

5 高可用

相關文章