分享 自动根据 host 判断 root 的 nginx with passenger 配置

doitian · 2011年12月09日 · 最后由 doitian 回复于 2012年02月04日 · 4712 次阅读
server {
  server_name ~^(.*\.)?(?<app>[^.]+)\.dev$;
  root /opt/apps/$app/public;
  rails_env development;
  passenger_enabled on;
}

Nginx 0.8.25+ 应该都能用,参考 server_name

需要跑哪个 Rails/Rack app 就在/opt/apps 下面建立个 symbol link(link 到含 config.ru 的根目录)

cd /opt/apps
ln -s /path/to/myapp

当然 http 里需要设置下passenger_rootpassenger_ruby

www.myapps.dev 和 myapps.dev 都会访问 /opt/apps/myapp

如果你连/etc/hosts 都不想改,想像 pow 那样,在 Mac 下可以用这个脚本来启动 pow 里的 DNS server

Linux 有Hoof可以用(我还没试过),使用 nsswitch 来自动把指定的根域名解析到本机

谢谢,收藏,非常实用的技巧。

开发环境 局域网内的 都可以访问?

谢谢。收藏。正为这问题头痛!!!

#2 楼 @wxianfeng Nginx 默认是 bind 所有 interface,局域网是可以访问的。局域网内没设置 DNS 的话,需要每台机器自己改 hosts 或者/etc/resolver

需要 登录 后方可回复, 如果你还没有账号请 注册新账号