這裡給大家推薦一款免費疊代 二開便捷的商城項目:源碼直通車>>>
系統環境:centos7.8(VMware中)
images版本:nginx:latest
1、拉取鏡像 docker pull nginx
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yYmVTYyADNhdjN5ITMxYDMxQzN2ATZiNGZjVDZjJjZj9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2、啟動nginx容器。
docker run --name my_nginx_2020 -d -p 80:80 --restart=always -e TZ="Asia/Shanghai" nginx:latest
3、通路80站點。
4、挂載nginx配置檔案到主控端。以上通路正常,但如果要配置自己的項目檔案,或者修改通路路徑檔案需要登入到容器中去,還需要安裝vi等,是以我們下面使用挂載檔案挂載到主控端,一切修改在主控端操作,還可以避免配置丢失。
A、登入nginx容器。docker exec -it my_nginx_2020 bash。進入/etc/nginx 檢視檔案清單,其中nginx.conf 配置nginx的全局基礎屬性配置。conf.d 存放通路路徑的配置檔案,本文不介紹nginx相關使用介紹,請自行搜尋配置參數含義~~
B、more nginx.conf 檢視配置内容。通過檔案内容可以看到日志是存儲在容器的 /var/log/nginx 檔案夾下。更多配置要去conf.d 檔案夾下檢視。
C、檢視conf.d檔案夾内檔案配置。看到conf.d檔案夾下隻有一個default.conf檔案,more default.conf 檢視其内容,也可看到日志檔案存儲在/var/log/nginx檔案夾下,而項目html和靜态檔案儲存在/usr/share/nginx/html下。
D、退出容器,并複制配置檔案等。
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
G、删除原來啟動的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站點。發現已經顯示我們的新内容。
G、重新開機nginx容器。以上頁面最後顯示的是中文歎号!,預設的html應該是編碼不對,我們将“!”其去掉,然後重新開機容器。這裡我推薦stop再start,因為如果用restart,有時候配置内容有錯後nginx不會被重新開機,而還是原來的配置,docker ps發現也在運作,但其實是沒有重新開機,會對排錯造成很大的困擾。
5、配置完成~~