<div dir="ltr"><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">I find it strange you oppose HTTP 404 with 'a proper status code': 404 is a 'proper' status code.<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">I find it even stranger you want to lie to search engines crawlers about the existence of your resource.<br><br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">That said, you can craft/modify upstream requests in the proxy module with directives such as:<br>- <a href="http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_method">proxy_method</a><br>- <a href="http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header">proxy_set_header</a><br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">- <a href="http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_body">proxy_set_body</a><br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">(basically RTFM, proxy module)<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)"><br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">When dealing with upstream responses content, you can use variabels such as:<br>- <a href="http://nginx.org/en/docs/http/ngx_http_upstream_module.html#var_upstream_status">$upstream_status</a><br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">(basically RTFM, upstream module)<br><br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">And for setting answer content conditionally, there is the <a href="http://nginx.org/en/docs/http/ngx_http_map_module.html">map</a> module you will find most helpful.<br></div><div class="gmail_extra"><div><div class="gmail_signature" data-smartmail="gmail_signature"><font size="1"><span style="color:rgb(102,102,102)">---<br></span><b><span style="color:rgb(102,102,102)">B. R.</span></b><span style="color:rgb(102,102,102)"></span></font></div></div>
<br><div class="gmail_quote">On Mon, Aug 8, 2016 at 11:50 AM, msonntag <span dir="ltr"><<a href="mailto:nginx-forum@forum.nginx.org" target="_blank">nginx-forum@forum.nginx.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
I have the following scenario:<br>
<br>
- Client: AngularJS-based SPA running on <a href="http://www.example.com" rel="noreferrer" target="_blank">www.example.com</a><br>
- Backend: API running on <a href="http://api.example.com" rel="noreferrer" target="_blank">api.example.com</a><br>
<br>
Both live in one nginx instance in two separate "server" environments.<br>
<br>
- Browsing to <a href="http://www.example.com/items/1" rel="noreferrer" target="_blank">www.example.com/items/1</a> launches the Angular app<br>
- App sends request to <a href="http://api.example.com/items/1" rel="noreferrer" target="_blank">api.example.com/items/1</a><br>
- If item 1 does not exist, API returns 404 status code<br>
- Client app can now show soft 404 error page, all fine<br>
- But for crawlers/search engines, I want to return a proper HTTP status<br>
code. Same goes for redirect to item’s canonical URL if that is necessary.<br>
<br>
So my idea was to do sth like this:<br>
<br>
- If request URL matches <a href="http://www.example.com/items/" rel="noreferrer" target="_blank">www.example.com/items/</a><id>, check existence of item<br>
by sending a HEAD request to <a href="http://api.example.com/items/" rel="noreferrer" target="_blank">api.example.com/items/</a><id><br>
- If request returns 404, return proper status code and error page<br>
- If request returns 200, do nothing and just serve the Angular app<br>
<br>
Is there any way to do this with (plain) nginx and if so–how could it be<br>
done specifically?<br>
<br>
Thanks for any hints :)<br>
<br>
Posted at Nginx Forum: <a href="https://forum.nginx.org/read.php?2,268827,268827#msg-268827" rel="noreferrer" target="_blank">https://forum.nginx.org/read.<wbr>php?2,268827,268827#msg-268827</a><br>
<br>
______________________________<wbr>_________________<br>
nginx mailing list<br>
<a href="mailto:nginx@nginx.org">nginx@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx" rel="noreferrer" target="_blank">http://mailman.nginx.org/<wbr>mailman/listinfo/nginx</a></blockquote></div><br></div></div>