Nginx - 4个域名的反向代理,每个域名指向不同的内容

时间:2017-12-31 13:41:59

标签: tomcat nginx proxy

我有四个不同的域名(我们称之为aaa.comaaa.co.zabbb.combbb.co.za)。我正在尝试(并且失败)做的是将aaa域指向常规的旧HTML内容,而bbb域充当tomcat服务器的反向代理。因为它代表tomcat的反向代理工作正常,而我指向它的所有四个域,一旦我尝试更新它以将域名的一半指向不同的内容,麻烦就开始了。请注意,我只尝试对文件/etc/nginx/sites-enabled/default进行更改,因此您将要查看的所有示例都在此文件中。

这是我现在拥有的(工作正常):

server {
  listen 80 default_server;
  server_name 123.123.123.123;  # using fake IP for this question
  root /usr/share/nginx/html;

  location / {
          proxy_set_header X-Forwarded-Host $host;
          proxy_set_header X-Forwarded-Server $host;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://bbb;  # this is the substitute for my actual url minus the .com/.co.za at the end
  }

  location ~ \.php$ {
          try_files $uri =404;
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          fastcgi_pass unix:/var/run/php5-fpm.sock;
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include fastcgi_params;
  }

  location /phpmyadmin/ { }

  location /anextraproject/ { }
}

请注意,上面有一些额外的location语句,例如,通过bbb.com/anextraproject/成功指向常规HTML / PHP资源。我不知道它是如何或为什么有效,但它目前有效,所以如果你的答案可能包括保留这些额外的location或使它更有效率,我真的很感激。

以下是我目前正在尝试分割域名(它根本不起作用):

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    root /usr/share/nginx/html/htmlproject;
    index index.html index.html;

    server_name aaa.com www.aaa.com aaa.co.za www.aaa.co.za;

    location / {
            try_files $uri $uri/ =404;
    }
}

server {
    listen 80;
    listen [::]:80;
    root /usr/share/nginx/html;

    server_name 123.123.123.123;

    location / {
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://bbb;
    }
}

上述server语句都在同一个文件中,一个接着一个但是当我尝试运行sudo service nginx restart时,我在错误日志中得到以下内容:

2017/12/31 15:14:39 [emerg] 42033#0: a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/default.save.2:4

如果我需要提供任何其他信息,请告诉我。

编辑:上述错误是由sites-enabled目录引起的,该目录还包含多个名为default.save.1default.save.2等的文件。删除它们并重新启动后服务器它没有再次抛出错误,但现在发生的是当我转到任何域名时它指示我aaa的内容,所以我上面第二个例子中的第二个server语句似乎不工作。

0 个答案:

没有答案
相关问题