nginxではある条件のrequest urlを、一定のurlに書き換えるというrewriteの機能を利用することが出来ます。

[root@nginx01 ~]# curl http://localhost/rewrite-test.html
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.9.12</center>
</body>
</html>


例えばrewrite-test.htmlというファイルはないので、アクセスしても404で返ります。

server {
  listen       80;
  server_name  localhost;

  location / {
    root html;
    index index.html index.htm;
    rewrite /rewrite-test.html index.html permanent;
  }

  error_page   500 502 503 504  /50x.html;

  location = /50x.html {
    root html;
  }
}


しかし、上記のような設定ファイルを作成したとします。
「rewrite /rewrite-test.html index.html permanent;」のところで、rewrite-test.htmlはindex.htmlに書き換えるように設定しています。

[root@nginx01 ~]# curl http://localhost/rewrite-test.html
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.9.12</center>
</body>
</html>


同じようにcurlコマンドでアクセスすると301が返ってきます。

1

ブラウザからはredirectされました。

time:2016-04-12T00:38:39+09:00  remote_addr:172.17.9.91 request:GET /rewrite-test.html HTTP/1.1 request_method:GET      request_length:312      request_uri:/rewrite-test.html  uri:/rewrite-test.html  query_string:-  status:301      bytes_sent:370  body_bytes_sent:185     referer:-       useragent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0      forwardedfor:-  request_time:0.000      upstream_response_time:-
time:2016-04-12T00:38:39+09:00  remote_addr:172.17.9.91 request:GET /index.html HTTP/1.1        request_method:GET      request_length:305      request_uri:/index.html uri:/index.html query_string:-  status:200      bytes_sent:850  body_bytes_sent:612     referer:-       useragent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0      forwardedfor:-  request_time:0.000      upstream_response_time:-


アクセスログ(ltsv形式)にもrewrite-test.htmlのアクセスが301で返ってくること
その後にindex.htmlにリダイレクトされることがわかります。