相关文章推荐
阳光的弓箭  ·  pymysql ...·  2 周前    · 
多情的大象  ·  运行“cordova build ...·  1 月前    · 
冷静的灯泡  ·  JSP 文件上传 | 菜鸟教程·  6 月前    · 
爽快的石榴  ·  Qt | ...·  12 月前    · 
停止处理请求,直接向客户端返回响应状态码,
执行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