反向代理(Nginx版本)
概念:反向代理:反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。(摘自百度百科)
优点:
1、提高内部服务器的安全
2、加快对内部服务器的访问速度
3、节约了有限的公网ip
使用场景:
1、仅有少量的外网ip,但是服务器较多,可以使用反向代理来充分使用服务器资源
2、不想让用户直接访问到自己的后端服务器,用来隔离前后端服务
注意:开启反向代理建议使用空站进行操作,因为开启反向代理后会将原先的站点变成纯静态方式运行,原先的站点如果有动态解析的话会失效。
示例1:直接反向代理
访问http://192.168.0.24 显示的是https://www.bt.cn的内容
示例2:开启缓存
示例3:开启目录代理(注意,开启目录代理的话必须关闭全局反向代理,就是代理目录是 / 的反向代理,该功能在高级功能中)
http://192.168.0.24/bbs/ -----> https://www.724dpyw.cn/bbs/
访问http://192.168.0.24/bbs/这个url,返回的内容是https://www.724dpyw.cn/bbs/ 这个url下面的内容
:)学习下 原来高级功能是这么用的 可是这样配置仍然不生效,大炮哥能帮忙看一下嘛。
这是前端站点的反向代理配置
----------------------------------------------------
是这样的,我先用python项目管理器,在宝塔面板中新建了一个python项目并映射到http://sunny-api.nexio.cn/
这是python项目的映射站点显示的反向代理,这时候访问http://sunny-api.nexio.cn/all-news-title 得到正常请求
下面是前端页面http://sunny-admin.nexio.cn/站点的设置
开启代理前访问http://sunny-admin.nexio.cn/api/all-news-title
↑ 得到的是nginx报的404
如下开启代理后
访问http://sunny-admin.nexio.cn/api/all-news-title
得到flask框架返回的404(也就是说代理指向了5000端口但是没有指向正确的url)
很疑惑这是为什么,谢谢大哥。
我的宝塔版本之前是6.9 但是升级到了7.5.1也一样不行 宝塔用户_qyxsre 发表于 2021-2-20 15:37
可是这样配置仍然不生效,大炮哥能帮忙看一下嘛。
这是前端站点的反向代理配置
-------------------------- ...
你的http://127.0.0.1:5000 在本机能访问到吗? 大炮运维V587 发表于 2021-2-20 15:41
你的http://127.0.0.1:5000 在本机能访问到吗?
是可以访问的
大炮运维V587 发表于 2021-2-20 15:41
你的http://127.0.0.1:5000 在本机能访问到吗?
你好,麻烦帮忙看下哈 谢谢 宝塔用户_qyxsre 发表于 2021-2-20 16:16
你好,麻烦帮忙看下哈 谢谢
你修改下目标url,带上后面的 /all-xxx 大炮运维V587 发表于 2021-2-20 16:28
你修改下目标url,带上后面的 /all-xxx
啊哈 把目标url改成了http://127.0.0.1:5000/all-news-title 通过 http://sunny-admin.nexio.cn/api访问到了/all-news-title的内容。但是,平级的站点下面仍有其他的内容(目前相当于代理了一个子目录)。
----------------------------------我排查出来了,大概算是一个bug,我复现如下。
按大炮哥的建议修改如下
此时的配置文件如下
此时的访问情况如下图,访问/api 直接指向了:5000/all-news-title,虽然不符合要求但问题渐渐明晰。
---------------------------------------------------
手动修改配置文件如下(这里如果通过 “把目标url”改成127.0.0.1:5000,进行修改的话 proxy_pass 是127.0.0.1:5000 不带最后那个斜杠“/” 使得flask无法识别地址)
再去访问
成功通过/api/all-news-title 访问到:5000/all-news-title,那么到此感谢大炮哥耐心解答问题解决。
但是,显然 这个问题的本质是带不带斜杠,我一想,那直接设置目标url为“http://127.0.0.1:5000/” 不就好了,但是!
宝塔的反向代理面板返回了“发送域名格式错误”,我再次尝试,把发送域名改回原本目标url为“http://127.0.0.1:5000/” 时显示的$host。
同样访问成功。
-----------------------------------
那么这应该是宝塔面板前端的一个自动填写input的bug,给ip:port加上“/”时,“发送域名”就自动变成了“ip:port/”,导致格式错误,实际上应该仍然是“$host”。
谢谢大炮哥的耐心解答。
宝塔用户_qyxsre 发表于 2021-2-20 16:56
啊哈 把目标url改成了http://127.0.0.1:5000/all-news-title 通过 http://sunny-admin.nexio.cn/api访问 ...
我的版本是7.5.2,代理目录是 /api,
然后我改成url:
http://localhost:8099/ 域名localhost
如果需要访问http://域名/api
这个是可以的,但是如果要访问下一级,比如
http://域名/api/abc.html
这个时候就会出错,然后我改成http://域名/apiabc.html
就可以,查看路由打印,这样也是对的
说明这个版本对于反斜杠处理是有问题的,虽然已经解决了我的问题,但是发送请求的时候,apiabc.html这样连着,看着很奇怪的
宝塔用户_qyxsre 发表于 2021-2-20 16:56
啊哈 把目标url改成了http://127.0.0.1:5000/all-news-title 通过 http://sunny-admin.nexio.cn/api访问 ...
这个问题后面已经解决了,是生成配置文件的时候一个bug
大大,做完反向代理我的是报错。被镜像的网站是HTTPS 大炮运维V587 发表于 2021-2-20 16:28
你修改下目标url,带上后面的 /all-xxx
大哥 我这个怎么搞怎么配置wws代理 经常遇到反代运行一段时间以后就无法响应的问题,重新加载一下反代的配置或者停用再启用就好了,何解?
页:
[1]
2