cod*_*nja 22
我通过node.js代理做到这一点..
安装http-proxy使用npm或官方网页
例:
var http = require('http'),
httpProxy = require('http-proxy'),
proxyServer = httpProxy.createServer ({
hostnameOnly: true,
router: {
'domain.com': '127.0.0.1:81',
'domain.co.uk': '127.0.0.1:82',
'127.0.0.1': '127.0.0.1:83'
}
});
proxyServer.listen(80);
Run Code Online (Sandbox Code Playgroud)
这会创建一个监听端口80的节点进程,并转发对以下内容的转发请求:81,82,83等.我建议运行此命令forever并添加一个条目,init.d以便在系统关闭时代理已启动.
我亲自在@liammclennan那边做了这件事.有些人认为通过Apache进行代理会破坏Node的一些性能和可扩展性优势(我自己没有经验,因为我的服务器没有那么多流量,但来自@ liammclennan的链接:"通过Apache进入的每个请求都会导致一个Apache线程,等待/阻塞,直到从Node.js进程返回响应.",这显然与Node的架构不完全吻合.)
我使用node-http-proxy来设置Node代理服务器,大致如第一个链接所述(我的Node代理在端口80上运行; Apache和我的其他Node服务没有).到目前为止似乎运行良好,虽然我偶尔会遇到稳定性问题,我通过检查代理仍在运行cron作业来"解决"(编辑:这些天似乎更稳定).代理非常轻巧,占用大约30MB内存.
您还可以使用Apache 2的mod_proxy和mod_proxy_http,它们可能更可靠或性能更高,具体取决于您的系统.
这是一个例子:
# Use Apache for requests to http://example.com/
# but use Node.js for requests to http://example.com/node/
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example/
<Location /node>
ProxyPass http://127.0.0.1:8124/
ProxyPassReverse http://127.0.0.1:8124/
</Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
当然,您可以根据需要修改指令,例如为虚拟主机使用不同的端口(例如,443),为Node.js使用不同的端口,或者在不同的块下设置代理,例如对于子域(例如,node.example.com).
| 归档时间: |
|
| 查看次数: |
32691 次 |
| 最近记录: |