Fastcgi FastCgiExternalServer mod_proxy

     mod_fastcgi 还有一个比较酷的功能,可以在连接其它机器的fcgi服务,fcgi在远程服务器中,相当于代理. 这个特性在 mod_fcgid 中没有体现

     Fastcgi FastCgiExternalServer mod_proxy

 一. 配置外部fcgi服务

      

<IfModule fastcgi_module>
	#AddHandler fastcgi-script .fcgi .py

	#设置外部服务名称(完整路径),服务的监听端口
	FastCgiExternalServer /usr/local/test/cgi-fcgi -host 192.168.1.82:9000 -idle-timeout 30 -flush
	DocumentRoot /usr/local/test

	# 设置别名
	ScriptAlias /myfcgi /usr/local/test/cgi-fcgi

	<Directory /usr/local/test>
		AllowOverride All
		Order Allow,Deny
		Allow from all
	</Directory>
</IfModule>

 

二. 启动fcgi服务

     本身fastcgi服务与TCP无关,无法建立TCP监听的. fastcgi 开发包为我们提供一个工具 examples/cgi-fcgi (也可使用spawn-fcgi,该进程只能在linux下使用), 相当于一个小型web server, 用于发布fastcgi服务

    

# 命令: cgi-fcgi -start -connect connName appPath [nServers]
# connName 指定监听地址和端口
# appPath fastcgi服务名称
# nServers fork进程数,默认为1
./cgi-fcgi -start -connect 192.168.1.82:9000 /usr/local/test/echo

netstat -anp|grep 9000  
tcp        0      0 192.168.1.82:9000           0.0.0.0:*                   LISTEN      6626/echo

     

 三. 测试运行

     在 82 上启动fcgi服务,看 83 是否能访问到 82 的服务

     运行 http://192.168.1.83/myfcgi ,发现出错, 查看日志: No route to host , 两台机器都能互相ping通, 估计虚拟机安装的有问题, 清理防火墙先: sudo iptables -F 

 

     fcgi browse

 

 

 四. mod_proxy 模块

    mod_fastcgi 模块在windows上表现差强人意,极不稳定, 何况很久没维护更新了, 不适合用在生产环境. 在 apache 2.4 版本提供了 mod_proxy 代理模块, 可以将远端服务器映射到本地 URL 空间中,完全可以替换 mod_fastcgi

   

    下载 apache2.4 或以上版本, 安装后会发现 modules 目录有很多代理模块 mod_proxy_ftp , mod_proxy_fcgi , mod_proxy_http 等, 实现了多种协议

    

#启用 fastcgi,http 协议: 
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_http_module modules/mod_proxy_http.so

#添加代理服务:    
ProxyPass /baidu http://www.baidu.com  
ProxyPass /fcgi/ fcgi://192.168.1.82:9000/  

  

    代理方式配置比FastCgiExternalServer简洁多了,浏览器输入: localhost/baidu 显示百度页面;  localhost/fcgi/  显示fcgi服务信息,此时远程服务器 cgi-fcgi 必须开启,监听9000端口, 参见上文  

 

你可能感兴趣的:(mod_proxy_fcgi,cgi-fcgi)