配置 /etc/hosts 以运行应用程序

配置 /etc/hosts 以运行应用程序

我正在使用 nginx,到目前为止,我在 /usr/share/nginx/html 上运行我的 php 应用程序,这是在 centOS 和类似系统上安装 nginx 时的默认文档根目录。

现在我必须创建服务器块(或虚拟主机)来运行另一个应用程序,然后按照本教程(https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-14-04-lts) 并最终在 /var/www/html 创建了我的应用程序。

在此过程中,正如教程中所述,将 etc/hosts 编辑为您的公共 IP,这使得另一个部署在我的 LAN 上的应用程序运行。我希望它只在我的计算机上运行,​​所以我将其更改为我的本地 IP,并在 hosts 中输入以下内容

192.168.0.38 dev.mysite.com www.dev.mysite.com 

奇怪的是,就在那之后,我注意到我的主机名已经改为

muUsername@dev instead of @localhost before
  1. 请告诉我为什么会发生这种情况以及如何将其改回来。
  2. 现在,当我在浏览器中访问 localhost 时,应用程序会运行,但当我访问 dev.mysite.com 时则不会运行,如何解决这个问题?
  3. 访问 www.dev.mysite.com 时,我在旧的 webroot(uss/share/nginx/html)上获得了我的旧应用程序。为什么会发生这种情况以及如何解决这个问题?

需要更多信息,请评论。

答案1

1) 发生这种情况是因为您正在为机器设置 FQDN,并且在这种情况下主机名被视为子域部分。这是由于获取主机名函数。如果你运行hosname -f它,它将为你提供 FQDN 和hostname -d域名。在所有这些 FQDN 之前设置你的机器名称。

更新:没注意你在 centos 上,更新了第二个文件位置

在 /etc/hosts 中:

192.168.0.38 mymachine dev.mysite.com www.dev.mysite.com  

在 /etc/sysconfig/网络:

HOSTNAME=mymachine  

然后重启

2) 当您在本地访问该域名时,内核会/etc/hosts在某个时刻查找内容,然后将请求路由到您的环回接口。您可能在 nginx 配置中遗漏了服务器名称。

3) 将文档根路径更改为此服务器名称。

server {
    listen 80;
    server_name www.dev.mysite.com;
    root /var/www/dev.mysite.com;
}

server {
    listen 80 default_server;
    server_name _;
    return 301 http://www.dev.mysite.com;
}

相关内容