Nginx的rewrite指令修改访问路径
2019-08-15 23:02
1071 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44580977/article/details/99655747
原则上,为了不把除了网关以外的服务对外暴露的,保证安全。用修改nginx代理转发到目标真实服务地址
既然不能修改页面请求,那么就只能在Nginx反向代理上做文章了。
我们修改nginx配置,将以/api/upload开头的请求拦截下来,转交到真实的服务地址:
location /api/upload { proxy_pass http://127.0.0.1:8082; proxy_connect_timeout 600; proxy_read_timeout 600; }
这样写大家觉得对不对呢?
显然是不对的,因为ip和端口虽然对了,但是路径没变,依然是:http://127.0.0.1:8002/api/upload/image
前面多了一个/api
Nginx提供了rewrite指令,用于对地址进行重写,语法规则:
rewrite "用来匹配路径的正则" 重写后的路径 [指令];
我们的案例:
server { listen 80; server_name api.leyou.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; } location / { proxy_pass http://127.0.0.1:10010; proxy_connect_timeout 600; proxy_read_timeout 600; } }
- 首先,我们映射路径是/api/upload,而下面一个映射路径是 / ,根据最长路径匹配原则,/api/upload优先级更高。也就是说,凡是以/api/upload开头的路径,都会被第一个配置处理
- proxy_pass:反向代理,这次我们代理到8082端口,也就是upload-service服务
- rewrite “^/api/(.*)$” /$1 break,路径重写: “^/api/(.*)$”:匹配路径的正则表达式,用了分组语法,把/api/以后的所有部分当做1组
- /$1:重写的目标路径,这里用$1引用前面正则表达式匹配到的分组(组编号从1开始),即/api/后面的所有。这样新的路径就是除去/api/以外的所有,就达到了去除/api前缀的目的
- break:指令,常用的有2个,分别是:last、break last:重写路径结束后,将得到的路径重新进行一次路径匹配
- break:重写路径结束后,不再重新匹配路径。
我们这里不能选择last,否则以新的路径/upload/image来匹配,就不会被正确的匹配到8082端口了
修改完成,输入nginx -s reload命令重新加载配置。然后再次上传试试。
相关文章推荐
- centos 7.0搭建lnmp后修改nginx访问路径的403错误
- jeecms怎么修改后台访问路径?
- Nginx中的rewrite指令(break,last,redirect,permanent)
- Nginx下修改wordpress固定链接后导致访问文章404
- nginx反向代理时通过rewrite解决后端资源css/js/img 写了绝对路径的问题
- nginx访问控制、rewrite应用、代理设置
- Nginx下修改WordPress固定链接导致无法访问的问题解决
- nginx 限制ip/限制访问路径
- 工程部署的时候如何修改默认访问路径
- jeecms怎么修改后台访问路径?
- axis2 修改webservice访问路径
- tomcat下如何修改访问路径
- tomcat发布项目访问路径的修改方法
- 一开始浏览器可以正常访问,修改web.xml,的servlet的url-pattern后在浏览器中不能用新的路径去访问,就算改了浏览器,也只能用以前的路径去访问,可能是没有做这一步操作
- IntelliJ IDEA修改web项目访问路径
- nginx配置访问指定图片路径方法
- nginx的rewrite功能配置指令
- Linux目录与文件创建时间 / 修改时间 / 访问时间 / 指令 touch(鸟哥的Linux私房菜基础学习篇第三版-第七章)
- nginx禁止用户访问隐藏文件和.htaccess文件 .htaccess文件(或者”分布式配置文件”)提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以
- Nginx通过二级目录(路径)映射不同的反向代理,规避IP+端口访问