2

好的,我似乎无法理解,我已经检查了 nginx 论坛,那里也没有太多帮助。我以为这很简单。我希望定义的子域转到不同的 url/端口。IE

DNS site.com goes to 192.168.1.1 w/ masking
DNS www.site.com goes 192.168.1.1 w/ masking
DNS red.site.com goes 192.168.1.1 w/ masking
DNS blue.site.com goes to 192.168.1.1 w/ masking

我希望 site.com 和 www.site.com 正常运行,但我希望 red.site.com 去 192.168.1.2:5000 和 blue.site.com 去 192.168.1.2:6000/temp/

等等等等……我什至不确定我是否关心地址栏中显示的内容,我想如果它保留 red.site.com 会很好,但这并不重要。我已经尝试过代理传递 url 重写,显然我做错了什么。这甚至可能吗?

4

3 回答 3

5

您是否尝试过Proxy pass指令?

有类似的东西

server {
  server_name red.site.com;

  location  / {
    proxy_pass http://192.168.1.2:5000;
  }
}
server {
  server_name blue.site.com;

  location  / {
    proxy_pass 192.168.1.2:6000/temp/;
  }
}

应该管用。查看文档以了解要转发的标头等内容...

于 2013-02-16T14:38:02.000 回答
3

根据需要创建尽可能多的虚拟服务器。签入/etc/nginx/sites-available并将default服务器复制到red...(或此处的配置)。然后/etc/nginx/sites-enabled去做一个符号链接

ln -s ../sites-available/red

并对其他服务器(蓝色...)执行相同操作,然后重新启动nginxkillall -HUP nginx重新加载配置。

基本上在虚拟服务器中,您可以提供特定于该服务器的任何配置。

例如,对于red

server {
  listen 5000;
  server_name red.site.com;
  root /var/www/docs/red;
  ...
}

或 for blue(注意temp添加到root

server {
  listen 6000;
  server_name blue.site.com;
  root /var/www/docs/somewhere/temp;
  ...
}

如果您还需要指定 IP,请执行

  listen 192.168.1.2:5000;

red或 6000为blue.

一些解释指令的文献。

于 2013-02-16T15:05:36.340 回答
3

如果文件不存在,您应该创建该文件:

/etc/nginx/conf.d/servers.conf

并用代理设置填充它。例如:

server {
    listen 80;
    server_name red.site.com;
    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 150;
        proxy_send_timeout 100;
        proxy_read_timeout 100;
        proxy_buffers 4 32k;
        client_max_body_size 8m;
        client_body_buffer_size 128k;
    }
}
于 2016-02-12T16:34:11.403 回答