我通过包含 conf.d/*.conf 设置了以下两个服务器指令。当我通过公共外部 IP 地址导航到服务器时,它似乎与 127.0.0.1 的服务器匹配,因为 localhost.access_log 文件中添加了一个条目。我预计这只会在通过 localhost 访问时发生。从外部 IP,我预计会匹配 .host.tld 指令server_name
或default_server
参数。
我是否需要确保 conf 文件的加载顺序?为什么 127.0.0.1 上的 listen 会以这种方式匹配?第二个 location 指令是空的吗?
server {
listen 127.0.0.1;
server_name localhost;
access_log /var/log/nginx/localhost.access_log main;
error_log /var/log/nginx/localhost.error_log info;
root /var/www/localhost/htdocs;
}
server {
listen 80 default_server;
server_name .host.tld;
access_log /var/log/nginx/host.access_log main;
error_log /var/log/nginx/host.error_log info;
root /var/www/host/htdocs;
location = / {
index index.php index.html;
}
location / {
}
}
答案1
将两个listen
指令更改为80
并将127.0.0.1
名称添加到server_name
段中localhost
可以修复此问题:
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost.access_log main;
error_log /var/log/nginx/localhost.error_log info;
root /var/www/localhost/htdocs;
}
server {
listen 80 default_server;
server_name .host.tld;
access_log /var/log/nginx/host.access_log main;
error_log /var/log/nginx/host.error_log info;
root /var/www/host/htdocs;
location = / {
index index.php index.html;
}
...
}