新手问题 nginx 中,二级域名怎么定位到服务器

zealinux · 2013年05月28日 · 最后由 gazeldx 回复于 2013年06月04日 · 10062 次阅读

正在安装 gitlab,

有一个问题是这样的,

www.example.com -- 是主站 server,也是 rails git.example.com -- 我想定位到 gitlab/,其实是启动另一个 server。

nginx 中不知道怎么配置。

Nginx Server names AND Proxy Module

server {
    listen       80;
    server_name  git.example.com;
    ...
}

还有别忘了给二级域名指定服务器 ip

upstream appone {
    server 127.0.0.1:3000;
}

upstream apptwo {
    server 127.0.0.1:5000;
}

server {
    listen 80;
    location / {
    if ($host ~ 'sub1.domain.com') {
            proxy_pass http://appone;
            break;
        }
        if ($host ~ 'domain.com') {
            proxy_pass http://apptwo;
            break;
    }
    }
}

我觉得你的意思是 upstream 的配置 这个是简单版的 复杂的过滤自己 google 下文档吧...

@zj0713001 @wppurking 补充:

如果 www.example.com, example.com 是 nginx 中配置。 而二级域名 gitlab.example.com 是 apache 服务器。

不知道有没有办法做

#3 楼 @zealinux nginx 和 apache 在一个服务器么?如果在同一个 哪个是 80?nginx 是 80 的话 把 apache 当成一个 rails 处理就好了 如果不在一个 IP 那就去域名商指定一下二级域名的 IP

@zealinux 你可以在 nginx 与 apache 中都拥有 xxx.example.com 的二级域名,他们只是你服务器上的接收端,你域名绑定了服务器的 ip 带上 http 1.1 的 host 头信息到达服务器的 80 端口,nginx 和 apache 都会按照 http 1.1 规范将请求处理到 host 匹配的虚拟 server 去。所以他们之间不冲突。

如果你要一台服务器跑 nginx 和 apache

  1. 两个只有一个用 http 默认的 80 端口,例如 nginx, 另外一个换其他端口例如 8080
  2. nginx 配置一个 server 他的 server_name 为 gitlab.example.com 然后将请求反向代理到本机的 apache 8080 端口去
  3. 域名商设置每个域名的 ip , 如果很多域名都是一个 ip, 那就设成一个 ip

就是和 @zj0713001 一个思路

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