nginx代理proxy_pass配置去除前缀
阅读数:119 评论数:0
跳转到新版页面分类
应用软件
正文
方案一:在proxy_pass后面加根路径 /
upstream one {
server localhost:8088 weight=5;
}
server {
listen 80;
server_name abc.com;
access_log "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G" main;
location ^~/user/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://one/;
}
}
^~/user/表示匹配前缀是user的请求,proxy_pass的结尾有/,则会把/user/*后面的路径直接拼接到后面,即移除user。
方案二:使用rewrite
upstream one {
server localhost:8088 weight=5;
}
server {
listen 80;
server_name abc.com;
access_log "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G" main;
location ^~/user/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
rewrite ^/user/(.*)$ /$1 break;
proxy_pass http://one;
}
}
注意到proxy_pass结尾没有/,rewrite重写url
相关推荐
语法:
rewrite regex replacement [flag]
正则表达式regex
.
匹配除换行符以外的的任意字符
?
0或1次匹配前面的字符
+
1次或多次匹配前面的
原因是在nginx配置文件中配置upstream时用了“_”字符,如上用的tomcat_server,直接报错了。改成tomcatserver,即不使用“_&
相关名词
1、nginx
一个高性能web-server和实施反向代理的软件。
2、lvs
Linux Virtual Server,Linux操作系统层面的一个高性能、高可用、负载均衡服务器。
3、
^
匹配字符串开始的位置
$
匹配字符串结束的位置
.*
.匹配任意字符串,*匹配数量0到正无穷
\.
斜杠用来转义,\.匹配.
(值1|值2)
或匹配模式
i
不区分大小写