解决线上服务器httpd无法反向代理resin的解决方法

2017-01-12 09:59:47来源:作者:运维部落人点击

一、简述

前两天有后端的小伙伴跟我反映说使用httpd 反向代理resin 时遇到的问题,在做网站管理后台的时候,发起的http 的put,delete 的请求无法经由resin 传递到后面的dbserver 。当时的第一反应就是httpd 的反向代理设置出现的问题,但是关于httpd 反代resin 的内容在网上机会搜索不到。于是,查看httpd 反代tomcat 的设置进行配置,但是依旧不成功。

二、解决思路

说明:因为真是的线上业务服务器,所以配置文件中的ip地址均使用IP代替,域名均使用servername代替

因为这是台线上的server ,有两个官网的业务在跑,所以不能停服。于是便有了以下三种我能想到的解决方案。

1 、将httpd 换成nginx ,但是这个客户的服务器慎重起见还是不要动的好,果断放弃。

2 、所以nginx 反代httpd 和resin 具体的配置如下;

(1 )先修改/usr/local/apache/conf/vhost 下面两个虚拟主机监听的端口

<VirtualHost *:8090>ServerName localhost<VirtualHost *:8091>ServerName localhost

(2) 修改nginx 的配置文件

server { listen 80; server_name servername1; chunked_transfer_encoding on; proxy_http_version 1.1; location / { proxy_pass http://IP:8090; proxy_set_header Host $host; } } server { listen 80; server_name servername2; chunked_transfer_encoding on; proxy_http_version 1.1; location / { proxy_pass http://IP:8091; proxy_set_header Host $host; } } server { listen 80; index index.html index.htm index.php; server_name servername3; location / { proxy_pass http://localhost:8080; proxy_redirect off; proxy_set_header x-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}

3 、修改了这么的配置感觉不是很爽,于是想到了第三种方法。

443 端口是给web 服务器使用ssl 进行https 方式进行工作的端口。也就是在原来的http 的基础上加了一层密,那我不要这层加密应该也能用吧?

于是想着直接让nginx 去监听443 端口,然后再让nginx 去反向代理resin ,同时将后端管理的域名与nginx 的域名绑定在一起,就能解决问题了。

修改nginx 的配置文件的内容

server { listen 443; index index.html index.htm index.php; server_name servername3; location / { proxy_pass http://localhost:8080; proxy_redirect off; proxy_set_header x-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}

总结:方法3 是对业务影响最下的方法,原来的业务不需要做任何的改动,也不存在nginx 配置出错无法代理httpd 而引起的业务中断。

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台