如图,这是Nginx的配置文件nginx.conf中的一段配置代码。
在http段中定义了一个名为webservers的upstream模块,主要用于负载均衡。
在server模块中,定义了一个location模块,名为"/",意为最低优先级的URL匹配。在该location模块中,将proxy_pass设置为http://webservers,即指定了我们刚才定义的upstream模块。
下面有一个if判断,$request_uri可以获取表示请求的uri这一全局变量,~表示区分大小写的匹配。
rewrite用于重写URL,其后面的这一长串用蓝色下划线标出的字符串分为两个部分,第一部分是$以及$之前的部分,即^/MonkeyServlet/([0-9]+)/(.+)$,是一个URI正则表达式,用于匹配请求的URL,即原始的URL;而$后面的部分,即/monkey/MonkeyServlet?id=$1&name=$2? permanent,表示重写后的URL。$1代表第一部分中第一个正则表达式匹配的内容,即([0-9]+)匹配的内容,$2代表第一部分中第二个正则表达式匹配的内容,即(.+)匹配的内容。
例如:我们浏览器地址栏中请求地址为http://localhost/MonkeyServlet/21212/James,重写后会变为http://localhost/monkey/MonkeyServlet?id=21212&name=James。
刚刚接触Nginx,好多不懂的地方,欢迎各位批评指正。若转载请标明出处,谢谢~~