Nginx的rewrite对地址进行重写

1.语法

rewrite "用来匹配路径的正则" 重写后的路径 [指令];

2.案例

server {
        listen       80;
        server_name  api.shunwang.com;

        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    	# 上传路径的映射
		location /api/upload {	
			proxy_pass http://127.0.0.1:8082;
			proxy_connect_timeout 600;
			proxy_read_timeout 600;
			
			rewrite "^/api/(.*)$" /$1 break;   # /$1匹配的参数
        }
    }

3.解释

rewrite "^/api/(.*)$" /$1 break,路径重写:

	"^/api/(.*)$":匹配路径的正则表达式,用了分组语法,把/api/以后的所有部分当做1组

	/$1:重写的目标路径,这里用$1引用前面正则表达式匹配到的分组(组编号从1开始),即/api/后面的所有。这样新的路径就是除去/api/以外的所有,就达到了去除/api前缀的目的

	break:指令,常用的有2个,分别是:last、break

		last:重写路径结束后,将得到的路径重新进行一次路径匹配

		break:重写路径结束后,不再重新匹配路径。

nginx -s reload命令重新加载配置

  

原文地址:https://www.cnblogs.com/yoyo1216/p/13278090.html