天天看點

三、Docker搭建nginx

這裡給大家推薦一款免費疊代 二開便捷的商城項目:源碼直通車>>>

系統環境:centos7.8(VMware中) 

 images版本:nginx:latest 

 1、拉取鏡像 docker pull nginx

  

三、Docker搭建nginx

 2、啟動nginx容器。  

docker run --name my_nginx_2020 -d -p 80:80 --restart=always -e TZ="Asia/Shanghai" nginx:latest
           

  

三、Docker搭建nginx

 3、通路80站點。

  

三、Docker搭建nginx

 4、挂載nginx配置檔案到主控端。以上通路正常,但如果要配置自己的項目檔案,或者修改通路路徑檔案需要登入到容器中去,還需要安裝vi等,是以我們下面使用挂載檔案挂載到主控端,一切修改在主控端操作,還可以避免配置丢失。

  A、登入nginx容器。docker exec -it my_nginx_2020 bash。進入/etc/nginx 檢視檔案清單,其中nginx.conf 配置nginx的全局基礎屬性配置。conf.d 存放通路路徑的配置檔案,本文不介紹nginx相關使用介紹,請自行搜尋配置參數含義~~

    

三、Docker搭建nginx

  B、more nginx.conf 檢視配置内容。通過檔案内容可以看到日志是存儲在容器的 /var/log/nginx 檔案夾下。更多配置要去conf.d 檔案夾下檢視。

    

三、Docker搭建nginx

  C、檢視conf.d檔案夾内檔案配置。看到conf.d檔案夾下隻有一個default.conf檔案,more default.conf 檢視其内容,也可看到日志檔案存儲在/var/log/nginx檔案夾下,而項目html和靜态檔案儲存在/usr/share/nginx/html下。

    

三、Docker搭建nginx

  D、退出容器,并複制配置檔案等。

    

三、Docker搭建nginx

  E、修改nginx.conf 和conf.d 中的預設檔案,然後綁定到各自對應的容器檔案。後來我轉念一想,其實可以将兩者内容合并到nginx.conf檔案,那麼隻需要修改/www/my_nginx/nginx.conf 并挂載即可。以下是對nginx.conf的一個簡單配置。

# user root;
worker_processes 8;

events {
    worker_connections  10240;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$host "$request" $remote_addr $remote_user [$time_local] $status $request_time $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main; # 這個位址竟然可以是docker裡面的絕對路徑!!!,因為-v挂載到了此處
           
keepalive_timeout  300;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    send_timeout 300;

    client_max_body_size 200m;
    sendfile        on;
    #tcp_nopush     on;
    #gzip  on;

    limit_req_zone $binary_remote_addr zone=req_limit_per_ip_second:1m rate=10r/s;
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip_minute:10m rate=100r/s;

    #server配置
    server{
        listen 80;
        server_name mytest;
        
        location ~ .*\.(php|php5|jsp)$ {
            deny all;
        }

        #
        location / {

            root   /usr/share/nginx/html; # 這個位址竟然可以是docker裡面的絕對路徑!!!,因為-v挂載到了此處
            index  index.html index.htm;
        }

    }
}
           

  F、修改/www/my_nginx/html/index.html 檔案。通過上面的第三步我們知道首頁顯示的内容,現在我們收到修改成顯示Hello World

    

三、Docker搭建nginx

    

三、Docker搭建nginx
三、Docker搭建nginx

  G、删除原來啟動的nginx容器,重新運作一個挂載檔案的容器。

    

三、Docker搭建nginx
docker run --name my_nginx_2020 -d -p 80:80 --restart=always -e TZ="Asia/Shanghai" -v /www/my_nginx/html:/usr/share/nginx/html -v /www/my_nginx/log:/var/log/nginx -v /www/my_nginx/nginx.conf:/etc/nginx/nginx.conf:ro nginx:latest
           
參數解析:
-d           背景運作容器,并傳回容器ID;
--name       為容器起一個容易區分且容易書寫的名字
-p           映射主控端端口到容器端口,主控端端口:容器端口
--restart=always  機器重新開機時自動啟動容器
-e       設定一些必須的環境變量。
          -e TZ="Asia/Shanghai" 設定時區為上海,強烈建議國内設定,否則容器内列印的所有日志時間都會差8小時。
           
-v       挂載主控端檔案到容器。
          -v /www/my_nginx/html:/usr/share/nginx/html  挂載html等靜态檔案
          -v /www/my_nginx/log:/var/log/nginx        挂載日志檔案
          -v /www/my_nginx/nginx.conf:/etc/nginx/nginx.conf:ro  挂載配置檔案
           

  H、再次通路80站點。發現已經顯示我們的新内容。

    

三、Docker搭建nginx

    

  G、重新開機nginx容器。以上頁面最後顯示的是中文歎号!,預設的html應該是編碼不對,我們将“!”其去掉,然後重新開機容器。這裡我推薦stop再start,因為如果用restart,有時候配置内容有錯後nginx不會被重新開機,而還是原來的配置,docker ps發現也在運作,但其實是沒有重新開機,會對排錯造成很大的困擾。

    

三、Docker搭建nginx

    

三、Docker搭建nginx

 5、配置完成~~