安裝nginx
docker 的安裝可以參考Docker部署微服務(Cloud-Admin)以及Docker參數、命令
docker pull nginx
docker run -d --rm -p 80:80 --name nginx nginx
docker cp nginx:/etc/nginx /etc/nginx
docker stop nginx
server {
listen 80;
server_name localhost;
charset utf-8;
root /opt/nginx/dist;
index index.html index.htm;
location /jwt/ {
# 轉發請求到後端服務網關
proxy_pass http://容器名:8765/jwt/;
}
location /api/ {
proxy_pass http://容器名:8765/api/;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
docker run --name nginx --network spring-net -p 80:80 -d -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -v /etc/nginx/conf.d:/etc/nginx/conf.d -v /opt/nginx/dist:/opt/nginx/dist -v /etc/localtime:/etc/localtime:ro -v /var/log/nginx:/var/log/nginx nginx
使用 Logrotate 進行日誌輪替
- 在宿主機新建腳本
/var/log/nginx/nginx.sh
# 不是中止Nginx的進程,而是傳遞給它信號重新生成日誌 kill -USR1 $(/bin/cat /var/run/nginx.pid)
- 新建配置文件
vi /etc/logrotate.d/nginx
/var/log/nginx/access.log /var/log/nginx/error.log { daily rotate 60 compress notifempty dateext sharedscripts postrotate # docker 中運行 Nginx,執行第一步的腳本 docker exec -d nginx /bin/sh /var/log/nginx/nginx.sh # 宿主機運行 Nginx # /bin/kill -USR1 $(/bin/cat /var/run/nginx.pid) endscript }
- Logrotate 配置文件參數詳解
參數 參數說明 daily 日誌的輪替週期是每天 weekly 日誌的輪替週期是每週 monthly 日誌的輪替週期是每月 rotate 數字 保留的日誌文件個數,0指沒有備份 compress 當進行日誌輪替時,對舊的日誌進行壓縮 create mode owner group 建立新日誌,同時指定新日誌的權限與所有者和所屬組,如 create 0644 root root mail address 當進行日誌輪替時,輸出內容通過郵件發送到指定的郵件地址,如 mail [email protected] missingok 如果日誌不存在,則忽略改日誌的警告信息 notifempty 如果日誌爲空文件,則不進行日誌輪替 minsize 大小 日誌只有大於指定大小才進行日誌輪替,而不是按照時間輪替,如 size 100k dateext 使用日期作爲日誌輪替文件的後綴,如 access.log-2019-07-12 sharedscripts 在此關鍵詞之後的腳本只執行一次 prerotate/endscript 在日誌輪替之前執行腳本命令。endscript 標識 prerotate 腳本結束 postrotate/endscript 在日誌輪替之前執行腳本命令。endscript 標識 postrotate腳本結束 - 測試是否有效
logrotate -vf /etc/logrotate.d/nginx
參數 參數說明 -?或–help 在線幫助 -d或–debug 詳細顯示指令執行過程,便於排錯或瞭解程序執行的情況 -f或–force 強行啓動記錄文件維護操作,縱使logrotate指令認爲沒有需要亦然 -s<狀態文件>或–state=<狀態文件> 使用指定的狀態文件 -v或–version 顯示指令執行過程 -usage 顯示指令基本用法