Ubuntu + Nginx 127.0.0.1 工作,但本地主机不工作

val*_*alk 4 ubuntu nginx localhost

这个很奇怪,因为我没有任何错误消息。

我有一个非常基本的默认文件:

server {
    #listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6

    root /var/www;
    index index.html index.htm index.php;

    # Make site accessible from http://localhost/
    server_name localhost;

    access_log      /var/log/nginx/default.access_log;
    error_log       /var/log/nginx/default.error_log warn;

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to index.html
            try_files $uri $uri/ /index.html;
    }

    location /doc {
            root /usr/share;
            autoindex on;
            allow 127.0.0.1;
            deny all;
    }

    location /images {
            root /usr/share;
            autoindex off;
    }
Run Code Online (Sandbox Code Playgroud)

现在,在 shell 中,

ping localhost 
Run Code Online (Sandbox Code Playgroud)

很好。

但是,在任何浏览器中,它都会显示错误。例如,Chrome 会说:“糟糕!Google Chrome 找不到本地主机”。

另一方面,127.0.0.1 适用于浏览器。

也许你知道我应该在哪里检查错误?/var/log 和其他文件中没有任何内容是干净的....

Smu*_*dge 5

首先,ping与 NGINX 完全相关,您可以 ping 任何会响应 ping 请求的服务器,而不管服务正在运行。

查看;

curl -I -v http://127.0.0.1/ - 将查看该站点是否可以通过本地地址访问

curl -I -v http://localhost/ - 将查看该站点是否可通过本地主机名访问

curl -I -v http://serverhostname/ - 将查看该站点是否可通过服务器主机名访问

nslookup localhost - 确保 'localhost' 解析为 127.0.0.1

发布该输出,如果您仍有问题,我们可以为您提供更多指导

  • nslookup 不使用 /etc/hosts 文件,而是使用 /etc/resolv.conf 文件中列出的名称服务器。(因此人们倾向于将 localhost 条目添加到他们的 dns 条目中) (2认同)

val*_*alk 0

感谢大家!实际上 nslookup 不相关,谢谢@Mark!所以我尝试了

sudo ping localhost 
Run Code Online (Sandbox Code Playgroud)

并得到了正确答案。

最后将/etc/hosts更改为 644,现在一切正常。虽然,不确定 644 是否是 chmod 的最佳选择。

另一件事,我不知道为什么最初/etc/hosts上的权限是

-rw------- 1 root root 278 2011-12-02 22:52 /etc/hosts
Run Code Online (Sandbox Code Playgroud)

但现在这有点无关紧要了。