我有三个非常相似的静态网站版本,我想从同一个虚拟机上的同一个nginx实例托管(最好)。
让我们说我的网站内容如下:
/opt/mysite/
flavor1/
index.html
...all content for first flavor/version of the site
flavor2/
index.html
...all content for second flavor/version of the site
flavor3/
index.html
...all content for third flavor/version of the site
等。现在让我们假装虚拟机的公共IP为9000.1.2.3
(我知道这不是有效的IPv4我只是以此为例)。当我像这样配置nginx时:
http {
server {
listen 8080;
server_name localhost;
location / {
root /opt/mysite
index index.html index.htm;
}
}
}
...然后启动nginx,我可以转到9000.1.2.3:8080
并查看默认的nginx欢迎屏幕。到目前为止,非常好。
现在我们还假装我已经购买了三个域名:example.com
,example.net
和example.info
。我真正想要的是:
| Domain Name | Maps to | Which then serves |
|--------------|:---------------:|:---------------------:|
| example.com | 9000.1.2.3:8080 | /opt/mysite/flavor1/* |
| example.net | 9000.1.2.3:9200 | /opt/mysite/flavor2/* |
| example.info | 9000.1.2.3:9300 | /opt/mysite/flavor3/* |
意思是,如果我去,比如http://example.com/fizz
,那么最终,9000.1.2.3/opt/mysite/flavor1/fizz
就会被归还。但是,如果我请求http://example.info/fizz
,那么最终会返回9000.1.2.3/opt/mysite/flavor3/fizz
。
我个人并不关心实现这一目标需要做些什么:可能是DNS配置,nginx调优,IP转发等等。所以我并不关心我的中间栏目上面的表格(" 地图到"列)。我只需要一种方法来调用这三个域,由在一个VM上运行的同一个nginx实例提供/支持,但为我提供不同版本的站点。有什么想法吗?
答案 0 :(得分:2)
试试这个:
server {
server_name example.com;
location / {
root /var/flavor1;
}
}
server {
server_name example.net;
location / {
root /var/flavor2;
}
}