目錄
最近發現我們的乙個應用產生了很多日誌,而這些日誌大多都是 nginx 的 access_log,我們缺省會把標準輸出收集到 es 裡分析應用日誌,但是很多都是 access_log 就可能會掩蓋掉真實的錯誤日誌,所以可能有時候我們並不想輸出這些 access_log,示例如下:
去 github 上扒了一下 nginx 的程式設計客棧 dockerfile, docker-nginx/dockerfile at master nginxinc/docker-nginx (github.com)
可以看到 nginx 缺省會把 access_log 和 error_log 鏈結到標準輸出中,這也就是為什麼我們在 docker logs 或者 kubectl logs 的時候能夠看到 access_log
我們可以在容器裡執行 cat /etc/nginx/nginx.conf 來檢視預設的 nginx 配置
default nginx conf
從上面可以看出來 error_log 的級別是 notice,如果有需要也可以配置成 warn/error,具體的日誌配置可以參考官方文件介紹,可配置的日誌級別有:debug, info, notice, warn, error, crit, alert, emerg
access_log 可以使用 off 直接禁用掉或者使用另外乙個 path,這樣就不會直接輸出到標準輸出中,就不會有那麼多的日誌了
知道配置怎麼修改了就比較方便了,只需要把我們新改的配置替換掉預設的配置就可以了,新的配置如下:
然後在 dockerfile 裡用新的配置覆寫預設的配置:
# copy custom nginx config
copy /conf/nginx.conf /etc/nginx/nginx.conf
如果你想記錄 access_log 但是不想直接,可以配置 access_log 為另外的檔名即可,就會寫入對應配置的檔案中,但不會直接輸出到標準輸出,也就不會造成採集的日誌很多都是 access_log
如果不想記錄,不關心 access_log 可以直接使用 off 配置禁用 access_log,如果想選擇性地記錄比如 2xx/3xx 不記錄,其他情況記錄也是可以的,nginx 文件上也有介紹,可以根據自己需要進行選擇
map $status $loggable
access_log /path/to/access.log combined if=$loggable;
docker 使用docker執行Nginx映象
在docker映象倉庫查詢nginx映象 建立nginx web資料夾,存放nginx的資訊 mkdir p opt nginx web 拷貝配置檔案到nginx web資料夾下 docker run name tmp nginx container d nginx 1.17 docker cp t...
docker推薦啟動mysql與nginx的命令
docker run p 12000 80 v nginx www usr share nginx html v nginx conf etc nginx v nginx logs var log nginx v etc localtime etc localtime ro name xhban n...
Linux下docker安裝恢復Nginx
docker pull nginx 建立資料夾 bash mkdir p data docker nginx00 www data docker nginx00 logs 建立乙個臨時例項,copy配置檔案到我們指定的目錄下,停止並刪除例項 bash docker run name tmp ngin...