我正在开展一个 rails 项目,需要一个 /http-bind 代理,但找不到任何相关信息,也找不到资源来说明这是可能的。 我需要在开发环境中转发此内容知道可以使用 unicorn + nginx 来转发代理,但是我正在寻找一种在我的开发环境中本地执行的简单快速的方法......那么,unicorn、thin 或 webrick 是否能够执行 http-bind 代理转发?
* host.com/http-bind ( xmpp http-bind ) already running
* localhost:3000 THIN server posts to /http-bind returns a 404 not found currently nothing mapped.
是否可以转发
http://localhost:3000/http-bind
到
my external http://host.com/http-bind ?
答案1
像thin和webrick这样的服务器非常适合原型设计,而unicorn和passenger是很好的应用服务器,但它们并非设计为功能齐全的Web服务器。对于这种事情,您确实应该使用实际的Web服务器(例如带有passenger的apache或nginx),因为它提供了足够的灵活性来执行这些类型的重定向和生产中所需的其他复杂配置。
你可以很容易地将 nginx 放在 Thin 前面;然后它会在端口 80 上应答,并将请求代理到端口 3000 上的 Thin。一个最小示例配置可能看起来像:
upstream thin {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name .example.com;
access_log /var/www/myapp.example.com/log/access.log;
error_log /var/www/myapp.example.com/log/error.log;
root /var/www/myapp.example.com;
index index.html;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
try_files $uri $uri/ @ruby;
}
location @ruby {
proxy_pass http://thin;
}
}
然后你可以添加一个location
for bosh类似这样的:
location /http-bind/ {
proxy_buffering off;
tcp_nodelay on;
keepalive_timeout 55;
proxy_pass http://xmpp.server:5280/xmpp-httpbind/;
}