和反向代理服务器协同工作
Treefrog框架提供另一个应用服务器(AP server)来返回每个请求动态创建的内容.前面已经提到, 应用服务器也可以作用网页服务器使用, 所以也可以处理静态的内容.作为网页服务器, 我们已经针对性的为它实现了一个函数,用来高速响应静态内容.
根据实际情况, 它适合于中小型的网页站点.然而, 当建立一个大型网页系统时, 为了实现稳定的运行和负载平衡, 使用网页服务器(反向代理)系统(例如nginx或Apache)就变得很有必要了.
还有, 如果你想用压缩的响应和SSL, 你必须独立架设一个网页服务器.
概要:对于大型的网站,架设网页服务器.
服务端角色
服务器 | 角色 |
---|---|
网页服务器(反向代理) | 负载均衡, 加密, 压缩, 缓存,发送静态内容等. |
应用服务器(TreeFrog) | 生成和发送动态内容(静态内容) |
数据库服务器 (RDB) | 数据存储,保存 |
我不打算深入详述Apache和nginx的反向代理配置. 因为互联网上已经有大量的信息可以获得.
基本思路就是反向代理监听80端口, 然后将收到的请求转发到应用服务器. 当然, 应用服务器应该分配一个和其他服务不一样的端口. 使用application.ini文件的ListenPort参数设置端口号.
如果你在同一台机器上运行一台应用服务器和反向代理服务器. 你可以使用UNIX域嵌套字(domain socket)连接它们.使用UNIX域嵌套字(domain socket)的好处是, 它的负债比TCP 嵌套字要小, 和不能被外部的主机连接.这个可以让你感觉更安全一点.
要设定相应的UNIX域嵌套字(domain socket)应用, 设置ListenPort参数如下:
ListenPort=unix:/tmp/foo
- 请按需更改这个文件名. 例如, 要使nginx反向代理到一个UNIX域嵌套字(domain socket), 增加下面的入口:
upstream backend {
server unix:/tmp/foo;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://backend;
}
}
然后需要做的就是保存这些设置.
启动应用服务器和网页服务器, 然后试着从浏览器访问它, 确保它们工作正常.如果工作不正常, 试着检查access log查找原因.