小编Seb*_*man的帖子

Nginx将子域转换为路径组件而不重定向

我们的想法是将传入的请求转发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)

subdomain rewrite nginx roundtrip

31
推荐指数
1
解决办法
1万
查看次数

Ruby on Rails环回请求导致死锁?

我正在开发模式中切换到独角兽.需要一个针对每个递归级别的工作进程来防止死锁情况,因此我运行了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)

ruby-on-rails thin unicorn

5
推荐指数
1
解决办法
1211
查看次数

标签 统计

nginx ×1

rewrite ×1

roundtrip ×1

ruby-on-rails ×1

subdomain ×1

thin ×1

unicorn ×1