我使用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?
也许它不想redirect到一个internal位置? 如果您尝试再次将其redirect到指定的位置,该怎么办? 即@404 ?
否则,这可能听起来像你可能必须启用recursive_error_pages为您的设置工作。