四、java支持
nginx可以通过tomcat增加jsp支持。默认情况下,CentOS可能已经安装java运行库JDK(http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html),可以通过下面的方式将其升级为最新版本。
4.1 安装jdk
先按上面的地址下载新版本的JDK文件,要注意查看系统对应的版本(区分32位和64位)然后输入以下指令进行安装配置,如下所示:
tar zxvf jdk-7u45-linux-x64.tar.gz mv /root/jdk1.7.0_45/ /usr/local/jdk vim /etc/profile exportJAVA_HOME=/usr/local/jdk exportJRE_HOME=/usr/local/jdk/jre exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH exportCLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
update-alternatives --install /usr/bin/java java /usr/local/jdk/bin/java300 update-alternatives --install /usr/bin/javac javac/usr/local/jdk/bin/javac 300 update-alternatives --config java update-alternatives --config javac
java –version
4.2 安装tomcat
从以下的地址下载tomcat组件(http://tomcat.apache.org/download-70.cgi),选择core版本就可以了。
wget http://apache.dataguru.cn/tomcat/tomcat-7/v7.0.47/bin/apache-tomcat-7.0.47.tar.gz tar zxvf apache-tomcat-7.0.47.tar.gz mv apache-tomcat-7.0.47 /usr/local/tomcat /usr/local/tomcat/bin/startup.sh ps aux |grep tomcat netstat –tlnp
vim /usr/local/tomcat/conf/server.xml <Connectorport="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> <Host name="localhost" appBase="/var/www/html" unpackWARs="true"autoDeploy="true"> #根目录,页面文件要放在/var/www/html/ROOT下面
mkdir /var/www/html/ROOT vim /var/www/html/ROOT/index.jsp Hello,tomcat home!
vim /usr/local/tomcat/conf/web.xml
4.3 设置nginx
可以通过代理转发的方式实现和tomcat的整合,通过设定只要扩展名为.jsp的请求就转发至8080的tomcat进行处理。
vim /etc/nginx/proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP$remote_addr; #获取真实IP
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #获取代理者的真实ip
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 432k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
vim /etc/nginx/nginx.conf
location ~ \*.jsp$ {
root ./ROOT;
index index.jsp;
proxy_pass http://127.0.0.1:8080;
}
4.4 测试
先重启tcomcat和nginx并新建html测试文件,如下所示。
vim /var/www/html/index.html the port:80
kill `ps aux |grep tomcat |awk '/[0-9]/{print $2}' | head -n1`
/usr/local/tomcat/bin/startup.sh
service nginx restart
五、访问者地理信息记录
Nginx可以通过配置使用http_geoip_module模块来记录、使用访问者的信息,或是根据这些信息有选择的提供服务。
5.1 配置地理数据文件
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz tar zxvf GeoIP.tar.gz cd GeoIP-1.4.8/ ./configure make make install
如果在编译时出现“Libtool library used but `LIBTOOL' is undefined”的错误提示,这是因为 libGeoIP 自带了一个很旧的 ltmain.sh,这个文件导致成的 libtool 也很旧,这 个 libtool 忽略了在 link 时调用它时传给它的 -arch 参数,导致生成的 .dylib 不是 UB 的,从而导致最后 的 link 失败。解决方法如下:
yum install libtool aclocal libtoolize –force
http_geoip_module模块会创建一些ngx_http_geoip_module变量,这些编码是基于客户端IP的,它会与MaxMind GeoIP文件进行匹配查询。默认情况下这些文件需要另外下载安装。
wget http://geolite.maxminx.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz gzip -d GeoIP.dat.gz gzip -d GeoLiteCity.dat.gz mkdir /usr/local/nginx/geoip mv /root/*.dat ./
5.2 配置nginx模块
Nginx的默认安装并不包括http_geoip_module模块,需要在安装nginx时指定—with-http-geoip_module选项。下图是未加载该模块的情况:
可以通下以下的指令新增模块,和全新安装nginx的方式相比,不需要执行make install只需在make成功后将nginx执行文件复制到原始的安装路径下就可以了。成功后的结果如下图所示:
./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf--pid-path=/var/run/nginx/nginx.pid --error-log-path=/var/log/nginx/nginx.log--http-log-path=/var/log/nginx/nginx-http.log --with-http_geoip_module make mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.orig cp /root/tengine/obj/nginx /usr/local/nginx/sbin/
vim /etc/nginx/nginx.conf geoip_country/usr/local/nginx/geoip/GeoIP.dat; geoip_city/usr/local/nginx/geoip/GeoLiteCity.dat;
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3; fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name; fastcgi_param GEOIP_CITY_COUNTRY_CODE$geoip_city_country_code; fastcgi_param GEOIP_CITY_COUNTRY_CODE3$geoip_city_country_code3; fastcgi_param GEOIP_CITY_COUNTRY_NAME$geoip_city_country_name; fastcgi_param GEOIP_REGION $geoip_region; fastcgi_param GEOIP_CITY $geoip_city; fastcgi_param GEOIP_POSTAL_CODE$geoip_city_continent_code; fastcgi_param GEOIP_LATITUDE $geoip_latitude; fastcgi_param GEOIP_LONGITUDE $geoip_longitude; include fastcgi_params;
/usr/local/nginx/sbin/nginx –s reload
5.3 测试地理信息
建立以下的php测试文件检测IP所在的地区
vim /var/www/html/geoip.php
<html>
<head>
<title>What is my IPaddress - determine or retrieve my IP address </title>
</head>
<body>
<?php
if(getenv(HTTP_X_FORWARDED_FOR)){
$pipaddress = getenv(HTTP_X_FORWARDED_FOR);
$ipaddress =getenv(REMOTE_ADDR);
echo "You Proxy IPaddress is :".$pipaddress."(via $ipaddress)";
} else {
$ipaddress =getenv(REMOTE_ADDR);
echo "YourIP address is :$ipaddress";
}
$country =getenv(GEOIP_COUNTRY_NAME);
$country_code =getenv(GEOIP_COUNTRY_CODE);
echo "<br/>Yourcountry :$country($country_code)";
?>
</body>
</html>
vim /var/www/html/geoip_city.php
<html>
<head>
<title>What is my IPaddress - determine or retrieve my IP address</title>
</head>
<body>
<?php
if (getenv(HTTP_X_FORWARDED_FOR)) {
$pipaddress = getenv(HTTP_X_FORWARDED_FOR);
$ipaddress = getenv(REMOTE_ADDR);
echo"<br>Your Proxy IP address is:".$pipaddress."(via $ipaddress)";
} else {
$ipaddress = getenv (REMOTE_ADDR);
echo"<br>Your IP address is: $ipaddress";
}
$geoip_city_country_code =getenv(GEOIP_CITY_COUNTRY_CODE);
$geoip_city_country_code3 =getenv(GEOIP_CITY_COUNTRY_CODE3);
$geoip_city_country_name =getenv(GEOIP_CITY_COUNTRY_NAME);
$geoip_region =getenv(GEOIP_REGION);
$geoip_city =getenv(GEOIP_CITY);
$geoip_postal_code =getenv(GEOIP_POSTAL_CODE);
$geoip_city_continent_code= getenv(GEOIP_CITY_CONTTINENT_CODE);
$geoip_latitude =getenv(GEOIP_LATITUDE);
$geoip_longitude =getenv(GEOIP_LONGITUDE);
echo"<br>Country:$geoip_city_country_name($geoip_city_country_code3,$geoip_city_country_code)";
echo"<br>Region:$geoip_region";
echo"<br>City:$geoip_city";
echo"<br>Postalcode:$geoip_postal_code";
echo"<br>Citycontinent code:$geoip_city_continent_code";
echo"<br>Geoiplatitude:$geoip_latitude";
echo"<br>Geoiplongitude:$geoip_longitude";
?>
</body>
转载于:https://blog.51cto.com/waringid/1441632