停止处理请求,直接向客户端返回响应状态码,
执行return指令后,同一级中后面的指令都会无效
可以在location块,server块,if块中使用,return指令比rewrite指令简单高效,尽量使用return
return code;
return code [text];
return code URL;
return URL;
code:返回给客户端的状态码
第一个语法中的code包含所有的http状态码
第三个语法中的code包含:
301:永久重定向
302:临时重定向
303:临时重定向,应使用GET方法定向获取请求的资源
307:临时重定向
308:永久重定向
text:返回给客户端的响应体内容,支持nginx内置变量
URL(统一资源定位符):重定向后返回给客户端的URL地址
1 返回状态码
server {
listen 80;
server_name localhost;
charset utf-8;
location / {
return 403;
2 返回状态码和响应体内容
server {
listen 80;
server_name localhost;
charset utf-8;
location / {
return 200 'Status Code:200';
使用谷歌浏览器访问会下载包含响应体内容的文本
3 重定向至其他URL
server {
listen 80;
server_name localhost;
charset utf-8;
location ^~ /web/ {
root /usr/share/nginx/html;
index index.hmtl index.htm;
location / {
return 301 /web/;
使用谷歌浏览器访问ip:80会重定向到ip:80/web/
4 不加状态码重定向到其他URL
server {
listen 80;
server_name localhost;
charset utf-8;
location ^~ /web/ {
root /usr/share/nginx/html;
index index.hmtl index.htm;
location / {
return $scheme://主机ip:80/web/;
使用谷歌浏览器访问ip:80会重定向到ip:80/web/
四、rewrite
根据匹配的正则表达式,重写URL
可以同时存在一个或多个rewrite指令
可以在location块,server块,if块中使用
rewrite接收的URI不包括host地址,即访问http:ip:port/test/,rewrite会接受到/test/;
也不包括请求指令,即访问http:ip:port/test/?a=1&b=3,rewrite会接受到/test/
rewrite regex replacement [flag]
regex:用于匹配URI(通用资源标识符)的正则表达式,可以使用"()"来标记要截取的内容
replacement:用于替换匹配成功后的URI的字符串,支持nginx内置变量
flag:用于设置rwrite对URI的处理行为,包含:
last:终止本location块,将重写后的URI使用各location块再次进行处理,一般使用在server块和if块
break:使用重写后的URL在本location块中继续处理,一般使用在location块
redirect:将重写后的URI返回给客户端,状态码为302,指明临时重定向
permanent:将重写后的URI返回给客户端,状态码为301,指明永久重定向
1 域名跳转,重写至www.baidu.com
server {
listen 80;
server_name localhost;
charset utf-8;
location / {
rewrite '^/test/' http://www.baidu.com ;
使用谷歌浏览器访问ip:80/test/,实际访问http://www.baidu.com
server {
listen 80;
server_name localhost;
charset utf-8;
location ^~ /web/ {
root /usr/share/nginx/html;
index index.hmtl index.htm;
location / {
rewrite '^/([a-z]{3})/(.*)' /web/$1/$2 permanent;
其中$1表示引用前面的([a-z]{3}),$2表示引用前面的'(.*)'
使用谷歌浏览器访问ip:80/aaa/xxx,实际访问http://ip:80/web/aaa/xxx