我是nginx中的菜鸟。我开始配置我的域(marianamarques.ntr.br和fabricadevozes.com.br)dns指向我的aws ec2实例公共IP。没关系。 当我开始配置nginx时:
当我告诉浏览器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服务器启动没有问题
有人可以帮忙吗?
答案 0 :(得分:1)
nginx.conf应位于/etc/nginx
。
在启用网站的情况下将其与配置文件一起发布,并且更容易告诉您到底出了什么问题,但听起来您可能在server_name
或root
指令中出错了你的服务器定义。确保使用和不使用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