我们的想法是将传入的请求转发http://abc.example.com/...并重写为http://example.com/abc/...
这很容易做到301/302重定向:
# rewrite via 301 Moved Permanently
server {
listen 80;
server_name abc.example.com;
rewrite ^ $scheme://example.com/abc$request_uri permanent;
}
Run Code Online (Sandbox Code Playgroud)
关键是要做到这一点URL变化透明的客户端时abc.example.com,并example.com点于同一Nginx的实例.
换句话说,Nginx可以在请求example.com/abc/...时提供内容,abc.example.com/...而无需另外客户往返吗?
起点配置
使用301完成任务的Nginx配置:
# abc.example.com
server {
listen 80;
server_name abc.example.com;
rewrite ^ $scheme://example.com/abc$request_uri permanent;
}
# example.com
server {
listen 80;
server_name example.com;
location / {
# ...
}
}
Run Code Online (Sandbox Code Playgroud) 解
我正在开发模式中切换到独角兽.需要一个针对每个递归级别的工作进程来防止死锁情况,因此我运行了2个工作进程.
问题
我正在开发环境中使用Thin服务器.我使用端口3000(dev环境中的默认值).我的问题是让服务器向自己发出请求.
假设我有以下控制器:
# app/controllers/recursions_controller.rb
class RecursionsController < ApplicationController
# /recursions
def index
# synchronously call recursions#show
RestClient.get("http://localhost:3000/recursions/1")
# finish!
render :text => 'index'
end
# /recursions/:id
def show
# finish immediately
render :text => 'show'
end
end
Run Code Online (Sandbox Code Playgroud)
这是相应的路线:
# config/routes.rb
resources :recursions
Run Code Online (Sandbox Code Playgroud)
这是我最初请求时请求日志的输出recursions#index:
[INFO] 2013-01-15 12:09:05 -0800 Started GET "/recursions" for 127.0.0.1 at 2013-01-15 12:09:05 -0800
Processing by RecursionsController#index as HTML
Completed 500 Internal Server Error in 60049ms
[FATAL] 2013-01-15 12:10:05 -0800 RestClient::RequestTimeout …Run Code Online (Sandbox Code Playgroud)