微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – nginx,瘦和多个主机

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

如果您熟悉Nginx,我已在本文的底部发布了我的Nginx.conf文件.

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

我想我的主要担心是有一个与特定服务器无关的thin_cluster.然后是服务器块,它具有server_name等.但是,thin_cluster不能嵌套在服务器块内.

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

这是我的/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;
    }
  }
}

解决方法:

您可以根据需要将其描述为mach“server”和“upstream”部分.

upstream cluster1 {
  ...;
}
upstream cluster2 {
  ...;
}
server {
  listen 80;
  server_name www.domain1.com;
  root /home/app1;
  location / {
    try_files $uri/index.html $uri.html $uri @backend;
  }
  location @backend {
      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;
      proxy_pass http://cluster1;
  }
}
server {
  listen 80;
  server_name www.domain2.com;
  root /home/app2;
  location / {
    try_files $uri/index.html $uri.html $uri @backend;
  }
  location @backend {
      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;
      proxy_pass http://cluster2;
  }
}

这是一个例子.

我使用“try_files”而不是无意义的“if”块.只需在文档中阅读它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐