本地网络应用无法解析本地主机

本地网络应用无法解析本地主机

我有一个本地网站叫http://localhost.example.com但现在当我尝试在网络浏览器中打开它时,它会将我重定向到http://www.example.com。以前这个方法有用。我在系统中所做的更改是 AWS CLI 的配置和 Bitbucket 本地配置,以便使用两个不同的帐户。仅此而已。我认为这些更改无关紧要。不是吗?

我提供的所有信息和文件均来自本地工作站。我使用的是 OS X 10.12 (beta 2)。

相关部分/etc/hosts这是:

127.0.0.1   localhost
255.255.255.255 broadcasthost
::1 localhost 

127.0.0.1   localhost.example.com
127.0.0.1   babydiapi.example.com
127.0.0.1   localhost.mi.example.com
127.0.0.1   localhost.qr.example.com
127.0.0.1   localhost.pay.example.com
127.0.0.1   playground.com
127.0.0.1   payments.com
127.0.0.1   localhost.comunidad.example.com
198.58.110.224  web1.example.com
198.58.115.115  web2.example.com
45.56.67.40 web3.example.com

但我得到ping localhost.example.com了这个:

PING localhost.example.com (104.200.16.137): 56 data bytes
64 bytes from 104.200.16.137: icmp_seq=0 ttl=49 time=166.894 ms

我尝试过ping http://localhost.example.com但是没有效果:

ping: cannot resolve http://localhost.example.com: Unknown host

我认为这是一种正常行为。

这是我的应用程序的临时服务器。显然不是 localhost。

我读到过某处说我应该使用host localhost.example.com,但我仍然得到这个:

localhost.example.com has address 104.200.16.137

我使用 Nginx 作为我的本地 Web 服务器,配置如下:

server {
    listen   127.0.0.1:80;
    listen   127.0.0.1:443 ssl;
    server_name localhost.example.com;
    server_name_in_redirect off;
    error_page 404 /www/error/404.html;
    error_page 503 /www/error/404.html;

    ssl_certificate /usr/local/etc/nginx/ssl/localhost.crt;
    ssl_certificate_key /usr/local/etc/nginx/ssl/localhost.key;


    access_log /usr/local/etc/nginx/logs/www.example.com.access.log;
    error_log /usr/local/etc/nginx/logs/www.example.com.error.log;

    location ~ ^/(.*)/$ {
         rewrite ^/(.*)/$    /$1 permanent;
    }

    location ~* ^.+(\.jpg|\.jpeg|\.gif|\.png|\.js|\.ico|\.woff|\.ttf|\.eot|\.css)$ {
        root /www/www.example.com/webroot;
        access_log        off;
        expires          365d;
    }
    location / {
        root   /var/www/www.example.com/webroot/;
        index  index.php index.html index.htm;
        if (-f $request_filename) {
            break;
        }
        if (-d $request_filename) {
            break;
        }

        if (-f $request_filename) {
            break;
        }


        # Trigger 503 response on maintenance
        set $mantenimiento 0;
        if (-f /var/www/www.example.com/.mantenimiento) {
            set $mantenimiento 1;
        }
        if ($remote_addr = 127.0.0.1) {
            set $mantenimiento 0;
        }
        if ($mantenimiento) {
            return 503;
        }

        if (!-f $request_filename) {
            rewrite ^/(.+)$ /index.php?url=$1 last;
            break;
        }

    }
    location ~ .*\.php[345]?$ {
        set  $script     $uri;
        set  $path_info  "";

        if ($uri ~ "^(.+\.php)(/.+)") {
          set  $script     $1;
          set  $path_info  $2;
        }
        include fastcgi_params;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/www.example.com$fastcgi_script_name;
        fastcgi_param  SCRIPT_NAME      $script;
        fastcgi_param  PATH_INFO        $path_info;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_read_timeout 300;
    }

    location @error_web {
        root /var/www/error;
        index 404.html;
    }
 }

你有什么想法或提示吗?我在网上搜索了大约一周,没有发现任何有用的信息。

答案1

我很想为您测试一下这个但我没有 OSX。

关于这个问题有一些讨论。人们说 hosts 文件中的格式问题(丢失/缺少/不正确的隐藏字符)可能会导致它被忽略。请参阅以下问题并向下滚动到答案和评论。

https://apple.stackexchange.com/questions/158117/os-x-10-10-1-etc-hosts-private-etc-hosts-file-is-being-ignored-and-not-resol

你也可以研究一下这个疯狂的事情。同样与 hosts 文件的格式化有关。

https://github.com/devopsgroup-io/vagrant-hostmanager/issues/60

你使用什么编辑器?您能否使用 vi、nano 或其他 Unix 编辑器仔细重写整个文件?

不要使用主机或 nslookup、dig 等...它们将绕过 hosts 文件并查询 DNS 服务器。继续尝试,ping localhost.domain.com直到获得127.0.0.1

答案2

我很好奇您的 /etc/hosts 是否不再与 /private/etc/hosts 相同。从我的 10.11.5 机器上,我看到它们应该是硬链接(与ls -li下面输出中第一个字段中看到的 inode 号相同:

Camerons-MacBook-Air:~ cameron$ ls -li /private/etc/hosts /etc/hosts
12484749 -rw-r--r--  1 root  wheel  247 15 Jul 21:01 /etc/hosts
12484749 -rw-r--r--  1 root  wheel  247 15 Jul 21:01 /private/etc/hosts

对你来说情况仍然如此吗?/etc/hosts 和 /private/etc/hosts 是否引用磁盘上的同一个文件?

在 Linux 主机上,我可能还想知道 /etc/nsswitch.conf,但我发现 OS X 似乎没有这个文件;但我不确定它会用什么来代替。此文件控制解析名称(例如用户名或主机名)的查找方法顺序。

干杯,卡梅伦

相关内容