我正在使用 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
- 请告诉我为什么会发生这种情况以及如何将其改回来。
- 现在,当我在浏览器中访问 localhost 时,应用程序会运行,但当我访问 dev.mysite.com 时则不会运行,如何解决这个问题?
- 访问 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;
}