Nginx反向代理的日志記錄問題

我正在使用以下Nginx反向代理配置。

server {
    listen      80;
    listen      [::]:80;
    server_name www.test.com;

    access_log /var/log/nginx/www.test.com.access.log;
    error_log  /var/log/nginx/www.test.com.error.log warn;

    location / {
        proxy_pass                         http://12.23.45.78:8080;
        proxy_http_version                 1.1;
        proxy_set_header Connection        "";
        proxy_set_header Host              $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host  $host;
        proxy_set_header X-Forwarded-Port  $server_port;
    }
}

通過添加access_logerror_log參數,它將記錄訪問日志。

現在我想跳過一些日志記錄,例如不記錄favicon.icoapple-touch-icon.png,所以我添加了以下配置。

location ~* ^/(?:favicon|apple-touch-icon) {
    log_not_found off;
    access_log    off;
}

但問題是,當我這樣做時,http://www.test.com/favicon.ico將無法正確訪問,它會提示“404 Not Found”錯誤。

這似乎表明反向代理主機正在接管favicon.ico訪問,而沒有將其轉發到上游進行處理,請問這是正常的Nginx行為嗎?

如果這是正常行為,我應該如何設置不記錄給定資源的日志?

提前感謝您的幫助!

? 最佳回答:

每個請求都會在某個位置結束(如果之前沒有完成)。每個位置都使用自己的內容處理程序。除非您通過內容處理程序聲明指令明確指定某些內容(例如,位不限于proxy_passfastcgi_passuwsgi_pass、etc.)),否則它將是一個靜態內容處理程序,用于從本地文件系統提供請求的內容。請查看我的服務器故障答案(1、2)以了解更多詳細信息。

在某些情況下,這樣的任務可以使用map塊來解決,例如:。

map $uri $log {
    ~^/(?:favicon|apple-touch-icon)  off;
    default                          /var/log/nginx/access.log;
}
server {
    ...
    access_log  $log;

當您需要實現條件基本身份驗證(示例)時,這種方法可以工作。不幸的是,它不能與access_log指令一起工作-相反,nginx將為圖標請求創建第二個名為off的日志文件。因此,如果您希望將每個請求傳遞到12.23.45.78上游,我看不到任何其他方法,只能為這兩個位置復制內容處理程序聲明。但是,每一個其他使用的指令都可以上移一級,從而被兩個位置繼承:

server {
    listen      80;
    listen      [::]:80;
    server_name www.test.com;

    error_log  /var/log/nginx/www.test.com.error.log warn;

    proxy_http_version                 1.1;
    proxy_set_header Connection        "";
    proxy_set_header Host              $host;
    proxy_set_header X-Real-IP         $remote_addr;
    proxy_set_header X-Forwarded-For   $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host  $host;
    proxy_set_header X-Forwarded-Port  $server_port;
    location / {
        access_log  /var/log/nginx/www.test.com.access.log;
        proxy_pass  http://12.23.45.78:8080;
    }
    location ~ ^/(?:fav|apple-touch-)icon {
        access_log  off;
        proxy_pass  http://12.23.45.78:8080;
    }
}

另一方面,沒有什么可以阻止您在本地提供這兩個文件,并且不將這些請求傳遞到任何地方。只需將它們放在某個專用目錄中,并使用帶有靜態內容處理程序的位置:

location ~ ^/(?:fav|apple-touch-)icon {
    access_log  off;
    root  /full/path/to/folder/with/icons;
}
主站蜘蛛池模板: 中文无码AV一区二区三区| 国产乱码精品一区二区三区中文| 日本高清一区二区三区 | 日本精品视频一区二区| 麻豆AV天堂一区二区香蕉| 在线视频亚洲一区| 一区二区三区日本电影| 亚洲V无码一区二区三区四区观看| 精品久久一区二区三区| 五月婷婷一区二区| 波多野结衣在线观看一区 | 奇米精品一区二区三区在| 无码人妻久久一区二区三区| 国产情侣一区二区| 中文字幕亚洲乱码熟女一区二区| 无码人妻精品一区二区三区久久| 黑巨人与欧美精品一区| 岛国精品一区免费视频在线观看| 亚洲av无码片区一区二区三区| 国模无码视频一区二区三区| 97精品国产福利一区二区三区| 国产经典一区二区三区蜜芽| 国产精品亚洲产品一区二区三区 | 国产一区二区影院| 国产精品免费一区二区三区四区| 亚洲AV无码国产一区二区三区 | 人妻视频一区二区三区免费| 国产A∨国片精品一区二区| 91久久精品午夜一区二区| 日韩美女视频一区| 内射女校花一区二区三区| 精品一区二区三人妻视频| 精品福利一区二区三| 国产婷婷色一区二区三区深爱网| 亚洲国产精品一区二区久久hs | 一区二区三区四区精品视频 | 日本一区精品久久久久影院| 国产精品亚洲一区二区三区| 乱色精品无码一区二区国产盗| 一区二区三区视频网站| 亚洲AV无码一区二区三区电影 |