nginx操作指南之二
四、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