起因

应用程序挂到公网时,域名地址不能沿用开发测试时类似IP+Port+AppName这种粗狂的形式,需要改成一些高大上的地址,或者现有的nginx需要以文根区分不通应用从而进行分发处理。
当然改变文根的方法有很多种,比如通过映射的方式:

# Spring MVC
@RequestMapping(value = "/prefix/Demo")
# Python
# 创建
bp=Blueprint('prefix',__name__,url_prefix='/prefix') 
# 使用
@admin.route('/Demo')
# 注册
app.register_blueprint(prefix.bp)

但是通过映射的方式可能会破坏原来的层次结构和代码逻辑的,至少涉及ajax的js也需要相应调整,所以不太推荐。这里我推荐采用了nginx/apache的反向代理,把请求进行处理转发,无需对原有的代码进行任何修改。

实践

举个例子:

公网地址:https://www.lovewow.cn/testApp
内网地址:https://127.0.0.1:6666
比如:表面上访问https://www.lovewow.cn/testApp/xxx,其实是想访问https://127.0.0.1:6666/xxx

nginx

server {listen 80;server_name https://www.lovewow.cn;charset utf-8;#access_log logs/host.access.log main;location /testApp/ { # 访问https://www.lovewow.cn/testApp就会转发到下面proxy_pass的值proxy_pass https://127.0.0.1:6666/;}
}

Apache

# 保证以下模块加载
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
# 配置ProxyPass
# ProxyPassReverse的配置总是和ProxyPass 一致,ProxyPassReverse防止页面内重定向导致无法访问
ProxyPass /testApp/ https://127.0.0.1:6666/
ProxyPassReverse /testApp/ https://127.0.0.1:6666/

其中可能遇到的问题
1 nginx日志中文出现乱码(其实是十六进制类似\xAB)

2 出现关于SSL的错误

# nginx的错误
ERR_SSL_PROTOCOL_ERROR
# 解决方法
ssl   on;
ssl_certificate   /path/xxx.crt;
ssl_certificate_key   /path/xxx.key;
ssl_verify_client off; # Apache的错误
AH01961: SSL Proxy requested for https://www.lovewow.cn/testApp/xxx but not enabled [Hint: SSLProxyEngine]
AH00961: HTTPS: failed to enable ssl support for 127.0.0.1:6666 (127.0.0.1)
# 解决方法
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off

利用反向代理对IP地址的文根修改相关推荐

  1. python—简单数据抓取三(简单IP地址代理、利用蘑菇代理实现IP地址代理刷新本地ip地址、利用蘑菇代理实现IP地址代理抓取安居客信息并实现多线程)

    学习目标: python学习二十三 -数据抓取三. 学习内容: 1.简单IP地址代理 2.利用蘑菇代理实现IP地址代理刷新本地ip地址 3.利用蘑菇代理实现IP地址代理抓取安居客信息并实现多线程 1. ...

  2. nginx反向代理取得IP地址

    nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递 ...

  3. nginx利用反向代理实现获取用户真实ip

    我们访问互联网上的服务时,大多数时,客户端并不是直接访问到服务端的,而是客户端首先请求到反向代理,反向代理再转发到服务端实现服务访问,通过反向代理实现路由/负载均衡等策略.这样在服务端拿到的客户端IP ...

  4. 阿里云服务器ECS利用反向代理FRP内网穿透

    阿里云ECS利用反向代理 F#R#P 内@网@穿@透 FRP 服务端搭建 内网PC 客户端搭设(windows版本) 远程连接 内网PC 客户端搭设(linux版本) 远程连接 过程问题 1.Wind ...

  5. win7 asp虚拟服务器,win7怎么利用ASP获取服务器IP地址 win7利用ASP获取服务器IP地址教程...

    win7系统浏览器打开的网页查看服务器ip地址,网络上浏览的网页都是放在服务器上的,那么怎样用ASP获取服务器ip地址呢?今天小编给大家带来ASP获取服务器IP地址的方法,请一起看看下文详细介绍吧. ...

  6. 一款功能强大的代理检查和IP地址轮转工具

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料+视频 作者:Alpha_h4ck,转载于freebuf 关于mub ...

  7. Crawler:基于urllib库获取cn-proxy代理的IP地址

    Crawler:基于urllib库获取cn-proxy代理的IP地址 目录 输出结果 实现代码 输出结果 后期更新-- 实现代码 import urllib.request import re imp ...

  8. php 判断 ip 城市,利用PHP怎么根据IP地址判断城市

    利用PHP怎么根据IP地址判断城市 发布时间:2020-12-25 16:11:48 来源:亿速云 阅读:89 作者:Leah 这期内容当中小编将会给大家带来有关利用PHP怎么根据IP地址判断城市,文 ...

  9. linux系统改ip地址 永久生效,Linux修改IP永久生效

    修改IP永久生效按以下方法: 1)修改配置文件 vi /etc/sysconfig/network-scripts/ifcfg-eth0(eth0,第一块网卡,如果是第二块则为eth1) 按如下修改i ...

最新文章

  1. MongoDB sharding迁移那些事(一)
  2. 用python爬取i春秋的课程名
  3. linux中设置环境变量PATH的方法(转)
  4. 最简单的 SAP Cloud Application programming CDS 练习
  5. html标签整合和css框架处理
  6. vue打包运行并解决404问题
  7. 工业汽轮机调节系统的模糊PID控制器
  8. angular 更新表单值的两种方法: setvalue,patchvalue
  9. curve BLS12-377/381 BN256 SageMath脚本
  10. 信息系统开发与管理简答题、应用题和名词解释题汇总
  11. 第三方应用在通话过程中调用setspeakerphoneon没有用_从0到1打造一个 WebRTC 应用
  12. Go语言黑帽子学习1
  13. 数字孪生核电站促进界面监测的应用实践
  14. windows7蓝牙怎么打开_windows7系统怎么调待机时间
  15. 【微信小程序】把客服按钮替换成自己想要的图片
  16. 触摸开关芯片原理及功能特点
  17. 2022年 linux运维日常工作内容
  18. 基因数据处理114之BWA建立全基因组索引成功
  19. Python进阶:btc逆向-数据采集-JS逆向
  20. 全景播放器-js+flash

热门文章

  1. 腾讯云tca云架构工程师师含金量及架构师具备的能力
  2. 集成学习(Bagging、Boosting、Stacking)算法原理与算法步骤
  3. Linux运维05:mpstat命令详解
  4. 成都榆熙:你知道拼多多品质险吗?
  5. python3通过pyhive连接hive
  6. forEach循环中异步操作的问题
  7. 四类异常检测算法综述:Isolation Forest、LOF、PCA及DAGMM
  8. idea连接数据库五种方式
  9. 探索TCP状态机之旅:发现网络连接的生命周期与神秘魅力
  10. 日历,求第二天的日期