Nginx
使用 nginx 作為 memcached + node.js 的反向代理攔截 404
我使用 nginx 作為反向代理從 memcached 中查找 html 內容,如果不存在,則 node.js,如果甚至不存在,node.js 返回 404。我想要做的是攔截並提供自定義node.js 返回的 404 頁面
問題是 nginx 沒有返回正確的 404.html 而是預設的。
因此,雖然我可以攔截 404 頁面,但 nginx 提供的是預設錯誤頁面,而不是 404.html
upstream memcached { server 127.0.0.1:11211; } error_page 404 /404.html; location /404.html { internal; } location @memcached { ... if ($memcached_request = 1) { memcached_pass memcached; error_page 404 502 504 = @nodejs; } if ($memcached_request = 0) { error_page 404 502 504 = @nodejs; } } location @nodejs { proxy_pass http://127.0.0.1:7777; ... error_page 404 /404.html; proxy_intercept_errors on; proxy_redirect off; } location / { try_files $uri $uri/ @memcached; error_page 403 = @nodejs; }
有沒有更好的方法來做到這一點“如果不在 memcached 中,請轉到 node.js”,而不是 error_page 404 = @fallback?如果沒有,有沒有辦法從最後一個後端擷取 404?
也許它不想重定向到某個
internal
位置?如果您嘗試再次將其重定向到指定位置怎麼辦?即@404
?否則,聽起來您可能必須啟用
recursive_error_pages
您的設置才能正常工作。