【发布时间】:2019-03-21 09:31:26
【问题描述】:
我有一个 nginx 配置,有两个虚拟主机,没有默认站点。
server {
listen 123.45.67.89:80;
server_name site_a.example.com site_a1.example.com;
root /srv/site_a_checkout/html/site_a;
access_log /var/log/site_a/nginx.access.log;
error_log /var/log/site_a/nginx.error.log;
index index.html index.htm index.nginx-debian.html;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
每个虚拟主机配置都有一个带有两个服务器的server_name 行。
第二个 server_name site_a1.example.com 的存在是因为有不止一台服务器,有时开发人员需要知道他们正在查看哪个服务器。
如果请求http://site_a.example.com、http://site_a1.example1.com、http://site_b.example.com 或http://site_b1.example1.com,nginx 的性能完全符合预期。
问题在于,如果请求http://123.45.67.89,则会提供site_a 站点。
没有/etc/nginx/sites_enabled/default,只有site_a 和site_b 的虚拟主机。
为什么 site_a 被用作 http://123.45.67.89?
如何使对 IP 地址的请求失败?
我也尝试过:https://superuser.com/a/1050864 和 https://serverfault.com/a/525011,但这些也不起作用。
【问题讨论】:
-
我找到了stackoverflow.com/a/41905098/129805 并在
sites-enabled中安装了一个default-444,但nginx 仍然从裸IP 地址提供site_a。 -
我也尝试过将 IP 地址设置为 server_name,来自 blog.gpopoteur.com/… 这也不起作用。
标签: nginx nginx-config