/ 中存储网

Apache和Nginx设置反向代理的方法

2014-04-08 22:55:01 来源:kejihao
最近在搞一个hadoop-ui-webjobs的项目,需要整合web ui和hadoop console,使用了内置的jetty来实现。

在上线的过程中遇到问题,我的应用占用的8080端口,服务器的安全策略不允许这个端口被外部访问。让运维的童鞋帮忙配置nginx反向代理,却被拒绝,说太麻烦,而且配好了也不一定能用。

因为自己不懂反向代理怎么配,于是被忽悠回来。嗯,自己在测试环境配一个试试好了。

目标是用浏览器访问测试服务器 xxx.xx.xx 就会自动显示出原本要访问 xxx.xx.xx:8080的内容咯。

而内置了Jetty的应用本身不需要做啥修改,只是单纯的让Apache/Nginx转发。

一、先选择了Apache来实现反向代理Jetty。

Apache的安装包下载地址:http://mirror.bit.edu.cn/apache/httpd/httpd-2.0.64.tar.bz2

若按照Apache源码包中的INSTALL一步一步安装,是无法实现反向代理的哦。因为这样安装完,PREFIX/modules下面没有反向代理需要使用的代码块。

所以,安装的时候需要先用这个配置。PREFIX是你安装apache时候可以指定的目录,默认是/usr/local/apache2/

$ ./configure --enable-mods-shared="proxy proxy_http proxy_ftp proxy_connect"

$ make

$ make install

那么ls PREFIX/modules下就会出现这些东东。

httpd.exp mod_proxy_ftp.so mod_proxy.so

mod_proxy_connect.so mod_proxy_http.so

然后修改PREFIX/conf/httpd.conf

在httpd.conf头部加入这样的配置:

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

ProxyRequests Off

<Proxy *&rt;

Order deny,allow

Allow from all

</Proxy&rt;

ProxyPass / http://localhost:8080/

最后,PREFIX/bin/apachectl start

二、再选择Nginx来实现反向代理Jetty

Ngnix安装包下载地址:http://nginx.org/download/nginx-1.2.5.tar.gz

这个就按照Nginx的官方说明安装好了,解压后进入nginx-1.2.5目录

$ ./configure --prefix=/usr/local/nginx --without-http_rewrite_module --with-http_ssl_module

$ make

$ make install

进入/usr/local/nginx,修改conf/nginx.conf,在和默认的server{}平行的位置上加入这段配置:

server{

listen 80;

server_name "";

location / {

proxy_pass http://127.0.0.1:8080;

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Read-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

然后,sbin/nginx

-------------------------------------------------------------------------------

自己试了试,两个办法都可以。其实不论是Apache还是Nginx转发Jetty的配置都不难,运维的童鞋为啥就是不肯帮我咧。郁闷!