nginx,其中2个域指向同一个根

时间:2014-02-19 13:39:21

标签: nginx amazon-ec2 dns

我是nginx中的菜鸟。我开始配置我的域(marianamarques.ntr.br和fabricadevozes.com.br)dns指向我的aws ec2实例公共IP。没关系。 当我开始配置nginx时:

  • 我创建了/ var / www
  • 我创建了/var/www/marianamarques.ntr.br/public_html
  • 我创建了/var/www/fabricadevozes.com.br/public_html
  • 我创建了/etc/nginx/sites-availble/marianamarques.ntr.br.conf,根据端口80指向/var/www/marianamarques.ntr.br/public_html
  • 我创建了/etc/nginx/sites-availble/fabricadevozes.com.br.conf,根据端口80指向/var/www/fabricadevozes.com.br/public_html

当我告诉浏览器http://www.fabricadevozes.com.br时,我从/var/www/fabricadevozes.com.br/public_html获得了htmls但是当我告诉浏览器http://www.marianamarques.ntr.br时,我从/ var / www / fabricadevozes获得了htmls .com.br / public_html也是。

我有点绝望。我的nginx是从apt-get安装的,经过几个小时的网络搜索,我知道我的/etc/nginx/conf.d/nginx.conf丢失了(我没有这个文件),但我的nginx服务器启动没有问题

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

nginx.conf应位于/etc/nginx

在启用网站的情况下将其与配置文件一起发布,并且更容易告诉您到底出了什么问题,但听起来您可能在server_nameroot指令中出错了你的服务器定义。确保使用和不使用www指定服务器名称。如果您没有指定www,它可能会加载您的默认域。在服务器名称

server {
  listen 80;
  server_name marianamarques.ntr.br www.marianamarques.ntr.br;
  root /var/www/marianamarques.ntr.br/public_html;
  ...
}

如果不是这样,我们需要查看配置文件。

答案 1 :(得分:0)

根据链接Nginx no-www to www and www to no-www解决 - 我创建第二个服务器,监听同一个端口,但期望server_name带有-www前缀,然后将其重写为我的其他服务器指向不带www的前缀,如下所示:

server {
    server_name  www.domain.com;
    rewrite ^(.*) http://domain.com$1 permanent;
}

server {
    server_name  domain.com;
    #The rest of your configuration goes here#
}

我希望它可以帮助别人。非常感谢一切!对不起......我的英语很差!

答案 2 :(得分:0)

显然你解决了这个问题,但让我解释它为什么会发生,你应该阅读How nginx processes a request

引用:

  

在此配置中,nginx仅测试请求的标头字段   “主机”确定应将请求路由到哪个服务器。如果   它的值与任何服务器名称都不匹配,或者请求不匹配   根本包含此标头字段,然后nginx将请求路由到   此端口的默认服务器。在上面的配置中,   默认服务器是第一个 - 这是nginx的标准默认值   行为。它也可以明确地设置应该是哪个服务器   default,使用listen指令中的default_server参数

当您丢失www或非www站点时,nginx无法将其与任何服务器匹配,因此它将请求发送到默认服务器,并假设您从{{1}中删除了default文件并且没有将any设置为默认值,那么默认服务器是按字母顺序排列的第一个,如果我们比较sites-enabled vs marianamarques.ntr.br.conf,那么获胜者是以fabricadevozes.com.br.conf开头的那个,那就是为什么它会显示该服务器。

由于你做了基本的重定向服务器,让我补充一点,你最好使用f而不是return,检查taxing rewrites

rewrite