我刚刚在新服务器上安装了 nginx 版本 1.2.5,发现我无法更改默认网站的默认文件。
在 /etc/nginx/sites-available/default 文件中我有以下几行:
server {
listen 80 default_server;
server_name myserver;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /var/www/default;
error_page 404 /4044.html;
location / {
index index.html index.htm;
}
}
server {
... server2...
}
server {
... server3...
}
不幸的是,当我使用服务器的 IP 地址打开页面时http://ip_address
,nginx 显示的不是文件 /var/www/default/index.html,而是默认文件“Welcome to nginx”。如果出现 404 错误,它不会显示文件 /var/www/default/4044.html,而是默认的“未找到”页面。
我尝试更改:将 listen 80 default_server; 更改为 listen 80 default; 并将 server_name myserver; 更改为 server_name servers_ip_address
重新启动了 nginx,但没有成功。检查了 error.log 文件,但没有错误。我在另外 2 台服务器上安装了 nginx,但 nginx 版本较旧。没有出现过这样的问题。
有什么想法吗?如果我无法更改它,是否有人知道默认页面位于何处,以便我可以编辑它们?谢谢。
答案1
由于某种原因,新的 Nginx 配置文件不包含文件 /etc/nginx/sites-available/default。这是我的问题。
答案2
这是老问题了,但是如果你不知道答案的话可以看看配置更改未反映在 nginx wiki 上。
尝试清除浏览器缓存,看看更改是否反映出来。我一清除浏览器缓存,“欢迎使用 Nginx”页面就再也没有加载过。
答案3
根据您的配置,这是正确的行为。然后您加载服务器的 IP 地址,您将始终获得该 IP 地址的第一个虚拟服务器定义,因为 nginx 无法从 HTTP 标头中确定服务器名称。
如果您希望另一个服务器块响应,只需将其移动到该 IP 地址的第一个位置。
默认服务器的 HTML 文件位于 /var/www/default,由“root”指令定义(root /var/www/default;)
拥有 IP 的默认配置实际上非常有用。我使用它来自动从非www.
地址重定向到www.somedomain.com
如下地址:
server {
listen 192.168.1.1 default;
server_name "_";
root /usr/local/nginx/html/whaever;
if ($host ~* ^[^.]+\.[^.]+$) { rewrite ^(.*)$ http://www.$host$1 permanent; }
}