如何在智能告警平台CA触发测试告警
893
2023-03-07
Nginx高性能Web服务器:Nginx与jsp、asp.net、perl的安装与配置(第五章)
通过前面的介绍,可以对Nginx有了一个比较全面的认识:Nginx本身是一个静态的HTTP服务器和反向代理服务器,它不支持动态页面,所谓的Nginx对动态程序的支持都是通过反向代理功能实现的。下面要讲述的Nginx对Perl和JSP的支持,就是通过Nginx的反向代理功能完成的。Nginx对Perl和JSP的支持在实现细节上可能有一定差别,但是实现原理是完全一样的。
Nginx的安装这里不再讲述,这假定Nginx的安装路径为/usr/local/nginx。
一、Perl(FastCGI)的安装
1.获取wrapper程序
2.安装相关的系统支持模块
(1)安装FCGI模块
[root@localhost opt]# tar zxvf FCGI-0.71.tar.gz[root@localhost opt]# cd FCGI-0.71[root@localhost FCGI-0.71]# perl Makefile.PL[root@localhost FCGI-0.71]# make[root@localhost FCGI-0.71]# make install
(2)安装IO模块
[root@localhost opt]# tar -xvzf IO-1.25.tar.gz[root@localhost opt]# cd IO-1.25[root@localhost IO-1.25]# perl Makefile.PL[root@localhost IO-1.25]# make[root@localhost IO-1.25]# make install
(3)安装IO::ALL模块
[root@localhost opt]# tar -xvzf IO-All-0.39.tar.gz[root@localhost opt]# cd IO-ALL-0.39[root@localhost IO-ALL-0.39]# perl Makefile.PL[root@localhost IO-ALL-0.39]#make[root@localhost IO-ALL-0.39]#make install
3.编写nginx-fcgi启动脚本
仅仅有wrapper文件是不够的,还需要一个脚本来创建socket、启动wrapper以及将wrapper和socket绑定,下面通过一个shell脚本来完成这一系列工作。
[root@localhost root]# more nginx-fcgi #!/bin/bash nginxroot=/usr/local/nginx start () { chown nobody.root $nginxroot/logs echo "$nginxroot/nginx-fcgi.pl -l $nginxroot/logs/nginx-fcgi.log -pid $nginxroot/logs/nginx-fcgi.pid -S $nginxroot/logs/nginx-fcgi.sock" >>$nginxroot/nginx_fcgi.sh chown nobody.nobody $nginxroot/nginx_fcgi.sh chmod 755 $nginxroot/nginx_fcgi.sh sudo -u nobody $nginxroot/nginx_fcgi.sh echo "start nginx-fcgi done" } stop () { kill $(cat $nginxroot/logs/nginx-fcgi.pid) rm $nginxroot/logs/nginx-fcgi.pid 2>/dev/null rm $nginxroot/logs/nginx-fcgi.sock 2>/dev/null rm $nginxroot/nginx_fcgi.sh 2>/dev/null echo "stop nginx-fcgi done" } case $1 in stop) stop ;; start) start ;; restart) stop start ;; *) echo $"Usage: perl-cgi {start|stop|restart}" exit 1 esac
在nginx-fcgi中,变量nginxroot指定Nginx的安装目录,nginx-fcgi.sock是生成的文件sock, nobody为运行nginx_fcgi进程的用户,这个用户要和运行Nginx的用户一致。
配置完脚本后,将此文件放到/usr/local/nginx目录下,接着通过如下方式管理nginx-fcgi进程。
[root@localhost root]#chmod 755 /usr/local/nginx/nginx-fcgi.pl[root@localhost root]#chmod 755 /usr/local/nginx/nginx-fcgi[root@localhost root]#/usr/local/nginx/nginx-fcgi start|stop|restart
二、为Nginx添加FCGI支持
修改Nginx配置文件,在server虚拟主机中添加如下配置:
location ~ \.cgi$ { root html; fastcgi_pass unix:/usr/local/nginx/logs/nginx-fcgi.sock; fastcgi_index index.cgi; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;}
在这个location配置中,Nginx与FastCGI的通信方式为Unix Socket。根据经验,IP Socket在高并发访问下比Unix Socket稳定,但Unix Socket速度要比IP Socket快。 “$document_root”是虚拟主机的根目录,在这里是/usr/local/nginx/html目录。
三、测试Nginx +Perl(FastCGI)
所有配置工作完成后,即可启动服务了。首选启动nginx-fcgi进程,操作如下:
/usr/local/nginx/nginx-fcgi start
然后启动nginx服务。
/usr/local/nginx/sbin/nginx
下面在/usr/local/nginx/html目录下创建一个test.cgi的文件。
# disable filename globbingset -fecho "Content-type: text/plain; charset=iso-8859-1"echoecho CGI/1.0 test script report:echoecho argc is $#. argv is "$*".echoecho SERVER_SOFTWARE = $SERVER_SOFTWAREecho SERVER_NAME = $SERVER_NAMEecho GATEWAY_INTERFACE = $GATEWAY_INTERFACEecho SERVER_PROTOCOL = $SERVER_PROTOCOLecho SERVER_PORT = $SERVER_PORTecho REQUEST_METHOD = $REQUEST_METHODecho REMOTE_ADDR = $REMOTE_ADDR
接着通过浏览器访问test.cgi文件,如果显示与下面类似的信息,表明Nginx+Perl环境搭建成功。:
CGI/1.0 test script report:argc is 1. argv is .SERVER_SOFTWARE = nginx/0.7.65SERVER_NAME = localhostGATEWAY_INTERFACE = CGI/1.1SERVER_PROTOCOL = HTTP/1.1SERVER_PORT = 8000REQUEST_METHOD = GETREMOTE_ADDR = 125.76.159.197
四、搭建Nginx+Java环境
Apache对Java的支持很灵活,他们的结合度也很高,例如Apache+Tomcat和Apache+resin等都可以实现对Java应用的支持。Apache一般采用一个内置模块来和Java应用服务器打交道。与Apache相比,Nginx在配合Java应用服务器方面,耦合度很低,它只能通过自身的反向代理功能来实现与Java应用服务器的支持,这恰恰是Nginx的一个优点,耦合度的降低,可以使Nginx与Java服务器的相互影响降到最低。
接下来通过Nginx+Tomcat的实例来讲解Nginx对Java的支持。Tomcat在高并发环境下处理动态请求时性能很低,而在处理静态页面更加脆弱。虽然Tmcat的最新版本支持epoll,但是通过Nginx来处理静态页面要比通过Tomcat处理在性能方面好很多。
Nginx可以通过两种方式来实现与Tomcat的耦合。
将静态页面请求交给Nginx,动态请求交给后端Tomcat处理。
将所有请求都交给后端的Tomcat服务器处理,同时利用Nginx自身的负载均衡功能,进行多台Tomcat服务器的负载均衡。
下面通过两个配置实例分别讲述这两种实现Nginx与Tomcat耦合的方式。
1.动态页面与静态页面分离实例
这里假定Tomcat服务器的IP地址为192.168.12.130,同时tomcat服务器开放的服务端口为8080,Nginx相关配置代码如下:
2.多个Tomcat负载均衡实例
这里假定有三台Tomcat服务器,分别开放不同的端口,地址分别是:
192.168.12.131:8000192.168.12.132:8080192.168.12.133:8090
Nginx的相关配置代码如下:
这里还有一点需要注意,如果在location指令使用正则表达式后再用alias指令,nginx是不支持的。
发表评论
暂时没有评论,来抢沙发吧~