Nginx 如何设置三个域名在同一目录下?
三个域名 http://a.com http://b.com http://c.com 全部指向 /home/website
每个域名有自己的主页 index.html index.php default.php
请问如何设置Nginx?
1楼(未知网友)
nginx的index指定的默认页面是有先后顺序的,如果前面的存在,后面的肯定不会被默认展示出来。所以只能你域名访问进来的时候跳转到那个页面了。不过不知道用下面的判断来把这个变量在赋值,能不能起效,没有实验,楼主可以试试。刚看到@陈湛翀的答案中已经涉及到这个方式,楼主可以试下,比下面的要优雅。如果你每个域名中还要做除了首页不一样的这个操作,比如rewrite不同规则之类的,可以用下面的方式。
如果因为后端处理程序都一致,非要把三个域名指向同一个目录的话,可以在nginx的server段,用这个变量$http_host进行判断访问的域名
if ($http_host = http://www.yourdomaina.com) {
#这里做跳转,具体用301,302还是rewrite,看你实际情况吧,不知道你那个是不是单入口文件
}
if ($http_host = http://www.yourdomainb.com) {
#这里做跳转,具体用301,302还是rewrite,看你实际情况吧,不知道你那个是不是单入口文件
}
if ($http_host = http://www.yourdomainc.com) {
#这里做跳转,具体用301,302还是rewrite,看你实际情况吧,不知道你那个是不是单入口文件
}
不太赞同多个域名绑定到同一个空间,不知道你页面中的链接是全地址还是简写。如果简写,搜索引擎的蜘蛛就会按当时访问的域名来拼接链接,同样的内容不同的地址,还同样的服务器IP,肯定会被降权。
其它的就视你业务的具体情况来定吧。
2楼(未知网友)
如果你需要只定义一个server就去判断host的值 然后定义index .如果你不要求在一个server内,可以定义三个server 然后定义index 。希望能帮到你
3楼(未知网友)
以下是nginx server block 的配置,完全适合你的场景,照抄即可。
server {
listen 80 ;
server_name http://a.com http://b.com http://c.com ;
location / {
root /home/website ;
if ($host = "http://a.com"){
set $index index.html ;
}
if ($host = "http://b.com"){
set $index index.php ;
}
if ($host = "http://c.com"){
set $index default.php ;
}
index $index ;
}
}
nginx 的if 其实已经很不错了,可以满足很多场景。