others-How to just return a fixed string and 200 response without serving a file or proxying to upstream service in nginx?

1. Purpose

In this post, I would demo how to just return a simple 200 http response and a fixed string without serving a file or proxying to an upstream service. Just as follows:



2. The solution

You can do as follows:

  location /foo {
  	 return 200 'hello world';
  }


Then we can test with this command:

 ⚡ root@launch-advisor-20191120  /etc/nginx/includes  curl http://localhost:81/foo
hello world#


Here we used the return directive in nginx, what is the syntax of return directive in nginx?

Syntax:	return code [text];
return code URL;
return URL;
Default:	—
Context:	server, location, if

The code is http response code.

The return code [text] would stop processing the request and returns the specified *code* to a client. The non-standard code 444 closes a connection without sending a response header.

Starting from version 0.8.42, it is possible to specify either a redirect URL (for codes 301, 302, 303, 307, and 308) or the response body *text* (for other codes). A response body text and redirect URL can contain variables. As a special case, a redirect URL can be specified as a URI local to this server, in which case the full redirect URL is formed according to the request scheme ($scheme) and the server_name_in_redirect and port_in_redirect directives.

In addition, a *URL* for temporary redirect with the code 302 can be specified as the sole parameter. Such a parameter should start with the “http://”, “https://”, or “$scheme” string. A *URL* can contain variables.

3. Summary

In this post, I demonstrated how to return a fixed string instead of serving a file or proxying to upstream service in nginx, the key point is to use the return code [text] . That’s it, thanks for your reading.