我有多个本地站点,并且我想将nginx配置为每个网站都有不同的主机.
在/ var / www中,我有2个站点:site1和site2
然后在/ etc / nginx / sites-available /中,我为每个服务器创建了2个不同的配置服务器.我有文件site1和site2,其内容如下:
server {
listen 80;
root /var/www/site1;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ /index.html;
}
}
和
server {
listen 7777;
root /var/www/site2;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ /index.html;
}
}
我使用站点1的http:// localhost:80和站点2的http:// localhost:7777访问它们.那很好.我也可以像这样在/ etc / hosts中添加主机名:
127.0.0.1 localhost site1 site2
我可以使用http:// site1:80和http:// site2:7777访问它们.但是我必须始终访问端口号.我想通过http:// site1和http:// site2访问它们.
有解决方案吗?
最佳答案
您已经弄清楚了,但是让我解释一下它为什么起作用的原因.
第一个站点site1应该可以正常工作,因为默认的http端口是80,而这正是site1在监听的内容,因此http://site1.com可以正常工作.
site2的第二个配置文件正在侦听端口7777,因此无法正常运行http://site2.com,实际上,它可能会选择您的默认网站并提供服务,因为nginx并未尝试匹配server_name在配置中带有一个,因为端口不匹配.
您应该在端口80上创建所有网站,nginx会自行进行匹配并知道要服务器哪个站点,除非它是https网站,否则您将使用端口443,这是默认的ssl端口