簡體   English   中英

nginx 緩存上的反向代理 404s static 內容

[英]nginx reverse proxy 404s on caching static content

我正在嘗試使用 nginx 作為 ZNC 網絡管理員的反向代理。 它工作正常,當我不緩存任何內容時,如訪問日志所示

[30/Dec/2015:16:47:07 -0500] "GET /znc/ HTTP/2.0" 200 1283 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"
[30/Dec/2015:16:47:08 -0500] "GET /znc/pub/dark-clouds.css HTTP/2.0" 200 1868 "https://herp.derp/znc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"
[30/Dec/2015:16:47:08 -0500] "GET /znc/skinfiles/_default_/global.css HTTP/2.0" 200 382 "https://herp.derp/znc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"
[30/Dec/2015:16:47:08 -0500] "GET /znc/pub/jquery-ui-sortable.1.11.4.min.css HTTP/2.0" 200 3609 "https://herp.derp/znc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"
[30/Dec/2015:16:47:08 -0500] "GET /znc/pub/selectize-0.12.1.css HTTP/2.0" 200 2373 "https://herp.derp/znc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"
[30/Dec/2015:16:47:08 -0500] "GET /znc/pub/jquery-1.11.2.min.js HTTP/2.0" 200 96159 "https://herp.derp/znc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"
[30/Dec/2015:16:47:08 -0500] "GET /znc/pub/jquery-ui-sortable.1.11.4.min.js HTTP/2.0" 200 38165 "https://herp.derp/znc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"
[30/Dec/2015:16:47:09 -0500] "GET /znc/pub/selectize-standalone-0.12.1.min.js HTTP/2.0" 200 42551 "https://herp.derp/znc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"
[30/Dec/2015:16:47:09 -0500] "GET /znc/pub/clouds-header.jpg HTTP/2.0" 200 31228 "https://herp.derp/znc/pub/dark-clouds.css" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"

這是設置。

server {
    listen                      443 ssl http2 default_server;
    listen                      [::]:443 ssl http2 default_server;
    server_name                 herp.derp;
    index                       index.html;
    root                        /home/derp/www/;
    access_log                  /var/log/nginx/access.log;

    # ZNC webadmin
    location /znc/ {
        proxy_set_header        X-Forwarded-For proxy_add_x_forwarded_for;
        proxy_pass              http://[::1]:7777;
    }
}

但是,如果我嘗試在我的網站上緩存 static 內容,則 https://herp.derp/znc/上除 static 內容之外的所有內容都有效。

這是設置

server {
    listen                      443 ssl http2 default_server;
    listen                      [::]:443 ssl http2 default_server;
    server_name                 herp.derp;
    index                       index.html;
    root                        /home/derp/www/;
    access_log                  /var/log/nginx/access.log;

    # ZNC webadmin
    location /znc/ {
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass              http://[::1]:7777;
    }

    # Client Caching
    location ~* \.(?:jpg|jpeg|png|gif|ico|css|js|ttf)$ {
        expires                 1y;
        add_header              Cache-Control public;
    }
}

這些與上面的文件完全相同,現在拋出 404

[30/Dec/2015:16:35:31 -0500] "GET /znc/ HTTP/2.0" 200 1283 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"  
[30/Dec/2015:16:35:31 -0500] "GET /znc/pub/dark-clouds.css HTTP/2.0" 404 640 "https://herp.derp/znc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"  
[30/Dec/2015:16:35:31 -0500] "GET /znc/skinfiles/_default_/global.css HTTP/2.0" 404 640 "https://herp.derp/znc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"  
[30/Dec/2015:16:35:32 -0500] "GET /znc/pub/jquery-ui-sortable.1.11.4.min.css HTTP/2.0" 404 640 "https://herp.derp/znc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"  
[30/Dec/2015:16:35:32 -0500] "GET /znc/pub/selectize-0.12.1.css HTTP/2.0" 404 640 "https://herp.derp/znc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"  
[30/Dec/2015:16:35:32 -0500] "GET /znc/pub/jquery-1.11.2.min.js HTTP/2.0" 404 640 "https://herp.derp/znc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"
[30/Dec/2015:16:35:32 -0500] "GET /znc/pub/jquery-ui-sortable.1.11.4.min.js HTTP/2.0" 404 640 "https://herp.derp/znc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"
[30/Dec/2015:16:35:32 -0500] "GET /znc/pub/selectize-standalone-0.12.1.min.js HTTP/2.0" 404 640 "https://herp.derp/znc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"
[30/Dec/2015:16:35:32 -0500] "GET /znc/favicon.ico HTTP/2.0" 404 640 "https://herp.derp/znc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.48 Safari/537.36"

我究竟做錯了什么? 我如何完成我想做的事情?

您是否不想繼續將對靜態內容的請求代理到后端? 我想您想在兩個位置都使用相同的代理通過信息

我設法通過在/ znc / location塊內復制正則表達式location塊並將其傳遞給相同的代理指令來解決我的問題。 顯然,nginx 每個請求僅匹配一個位置塊

server {
    listen                      443 ssl http2 default_server;
    listen                      [::]:443 ssl http2 default_server;
    server_name                 herp.derp;
    index                       index.html;
    root                        /home/derp/www/;
    access_log                  /var/log/nginx/access.log;


    # ZNC webadmin
    location /znc/ {
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass              http://[::1]:7777;

        # Client Caching
        location ~* \.(?:jpg|jpeg|png|gif|ico|css|js|ttf)$ {
            expires             1y;
            add_header          Cache-Control public;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass          http://[::1]:7777;
        }
    }

    # Client Caching
    location ~* \.(?:jpg|jpeg|png|gif|ico|css|js|ttf)$ {
        expires                 1y;
        add_header              Cache-Control public;
    }
}

將緩存塊放在“位置/”內部和外部效果很好。 經過數小時的調查,這是 Nuxt 與 Nginx 結合使用的唯一可行解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM