美文网首页
2018-12-06 基于apache-httpd实现微服务的请

2018-12-06 基于apache-httpd实现微服务的请

作者: FredWorks | 来源:发表于2018-12-06 12:13 被阅读0次

微服务化以后,每个模块都会运行自己的进程,使用自己的独立应用根路径。但在前端,不希望看见这些,而是希望通过一个统一的域名和端口,访问所有的服务。此时,最简单的方案,就是apache-httpd,或类似的代理方案。

  1. 首先,配置httpd启用代理。
    对于apache-httpd-2.4.*系列版本,安装时就已经配置好了代理服务相关的子模块了。可以通过检查 /etc/httpd/conf.module.d/00-proxy.conf 配置文件是否存在,以及其内容是否包含:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

来判断。

  1. 配置httpd的代理规则。
    在 /etc/httpd/conf.d 中,增加一个代理规则配置文件 proxy.conf:
vi /etc/httpd/conf.d/proxy.conf

填写如下内容:

ProxyPass /proxy_url http://ip:port/real_url
ProxyPassReverse /proxy_url http://ip:portreal_url

比如,我在主机 192.168.1.154 上,部属了三个微服务模块,其中:

  1. /security子模块,请求模式为 http://192.168.1.154:58002/security
  2. /humans子模块,请求模式为 http://192.168.1.154:58003/humans
  3. /finance子模块,请求模式为 http://192.168.1.154:58004/finance

那么,可以配置为:

ProxyPass /security http://192.168.1.154:58002/security
ProxyPassReverse /security http://192.168.1.154:58002/security
ProxyPass /humans http://192.168.1.154:58003/humans
ProxyPassReverse /humans http://192.168.1.154:58003/humans
ProxyPass /finance http://192.168.1.154:58004/finance
ProxyPassReverse /finance http://192.168.1.154:58004/finance

然后,重启httpd服务:

$ service httpd restart

然而,测试的时候,系统报 503 错误。
检查日志:

$ tail -100f /var/log/httpd/error.log

发现错误信息如下:

[proxy:error] [pid 13107:tid 140195550705408] (13)Permission denied: AH00957: HTTP: attempt to connect to 192.168.1.154:58003

猜测是selinux的权限控制导致的,经过百度,找到解决方案:

$ setsebool -P httpd_can_network_connect 1

再次访问,发现代理已经生效。

相关文章

  • 2018-12-06 基于apache-httpd实现微服务的请

    微服务化以后,每个模块都会运行自己的进程,使用自己的独立应用根路径。但在前端,不希望看见这些,而是希望通过一个统一...

  • 网络文件共享服务

    实现基于DB文件的虚拟用户FTP服务 实现基于MySQL的虚拟用户FTP服务 实现基于NFS共享服务的http实时...

  • 服务通知

    app中实现服务通知可以通过消息推送机制实现,而基于微信的通知渠道,小程序想要实现服务通知推送,需要借助模版消息。...

  • html5 报表界面

    2018-12-06 下面来一步步实现布局

  • Spring Cloud 2.0(一):Eureka

    Eureka:基于REST的服务,主要负责实现微服务架构中的服务治理功能(管理所有服务的信息与状态)以下代码基于:...

  • Netty源码分析之服务启动

    占小狼 转载请注明原创出处,谢谢! 本文主要分析Netty服务端的启动过程。 Netty是基于Nio实现的,所以也...

  • Go Registry

    实现微服务的服务注册中心,支持服务服务注册、接收心跳等。 客户端实现基于注册中心的服务发现机制 微服务 微服务是一...

  • 盘古开发框架集成 ShenYu 网关实现 Dubbo 泛化调用

    盘古开发框架下实现微服务网关的缺省姿势为基于 pangu-web 模块的传统接口调用模式,具体请参考文档:如何发布...

  • wechat 使用本地服务代理,实现本地微信开发

    开源代码请点击 1. 域名、服务器和localtunnel 的配置 1.1 应用服务器通过域名与微信服务器实现连接...

  • 基于 Docker 安装 Jenkins

    学习完整课程请移步 互联网 Java 全栈工程师 本节视频 【视频】Dubbo 实现微服务架构-持续交付-基于 D...

网友评论

      本文标题:2018-12-06 基于apache-httpd实现微服务的请

      本文链接:https://www.haomeiwen.com/subject/tdnncqtx.html