【问题标题】:nginx, thin, and multiple hostsnginx、瘦和多主机
【发布时间】:2011-06-25 01:59:46
【问题描述】:

我正在尝试在运行 nginx + Thin 的服务器上设置多个域。例如,我希望 www.domain1.com 和 www.domain2.com 转到不同的应用程序,它们各自的应用程序具有不同的根路径。

如果你熟悉 nginx,我已经在这篇文章的底部发布了我的 nginx.conf 文件。

我在想我可以尝试拥有多个服务器块,但是 然后我遇到了一个问题,服务器默认选择一个随机瘦端口,两个域都转到同一个应用程序。 *主要原因是两个应用程序的所有端口都位于 Thin_cluster 块内。*

我想我主要担心的是 Thin_cluster 与特定服务器没有关联。然后是具有 server_name 等的 server 块。但是,thin_cluster 不能嵌套在 server 块内。

关于如何为多个主机提供服务的任何想法?

这是我的 /etc/nginx/nginx.conf 文件

user  nginx;
worker_processes  5;

error_log  /var/log/nginx.error.log;
pid        /var/run/nginx.pid;

events {
  worker_connections  1024;
}

http {
  include       mime.types;
  default_type  application/octet-stream;

  log_format    main  '$remote_addr - $remote_user [$time_local] $request '
                      '"$status" $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

  access_log    /var/log/nginx.access.log  main;

  sendfile      on;

  keepalive_timeout  65;

  upstream thin_cluster {
    server 0.0.0.0:3000;
    server 0.0.0.0:3001;
    server 0.0.0.0:3002;
    server 0.0.0.0:3003;
    server 0.0.0.0:3004;
  }

  server {
    listen       80;
    server_name  www.domain1.com;

    root /home/ec2-user/helloCloud/public;

    location / {
      proxy_set_header  X-Real-IP  $remote_addr;
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;

      if (-f $request_filename/index.html) {
        rewrite (.*) $1/index.html break;
      }
      if (-f $request_filename.html) {
        rewrite (.*) $1.html break;
      }
      if (!-f $request_filename) {
        proxy_pass http://thin_cluster;
        break;
      }
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
      root   html;
    }
  }
}

【问题讨论】:

    标签: ruby-on-rails nginx virtualhost thin multiple-domains


    【解决方案1】:

    您可以根据需要将“服务器”和“上游”部分描述为马赫。

    上游集群1 { ...; } 上游集群2 { ...; } 服务器 { 听 80; server_name www.domain1.com; 根 /home/app1; 地点 / { try_files $uri/index.html $uri.html $uri @backend; } 位置@后端{ proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header 主机 $http_host; 代理重定向关闭; proxy_pass http://cluster1; } } 服务器 { 听 80; server_name www.domain2.com; 根 /home/app2; 地点 / { try_files $uri/index.html $uri.html $uri @backend; } 位置@后端{ proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header 主机 $http_host; 代理重定向关闭; proxy_pass http://cluster2; } }

    这是一个例子。

    我没有使用难看的“if”块,而是使用了“try_files”。只需在文档中阅读即可。

    【讨论】:

      猜你喜欢
      • 2011-04-10
      • 1970-01-01
      • 2014-06-14
      • 2011-08-17
      • 2021-11-18
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多