我成功地创建了一个apache服务器,但我不想通过输入192.168.0.102连接到它,我想要一个像www.google.com这样的普通url。我该怎么做呢?我访问了httpd.conf,找到了ServerName行,但将其设置为类似www.mysite.com的值似乎不起作用。我也尝试使用我的外部ip(https://www.whatismyip.com)作为服务器名称,但它不能连接。只有当我尝试连接到192.168.0.102或localhost时,它才能工作。我该如何解决这个问题?谢谢
发布于 2016-08-08 05:20:17
有三件基本的事情你需要知道。
虚拟名称托管
HTTP允许在同一IP地址和端口上托管多个网站。客户端使用Host请求标头来告诉服务器它想要为哪个站点获取数据。
ServerName就是其中的一部分。
…但是客户端首先需要知道如何向服务器发送请求。
DNS
当客户端向服务器发出请求时,它会使用服务器的IP地址,以便通过网络将请求传递给服务器。这就是地址。
IP地址是一系列的数字,这对人类来说并不是很友好。
DNS将友好名称(如www.example.com)转换为IP地址。
客户端必须查找名称才能找到IP地址。它通常通过主DNS系统做到这一点,为了让你的名字链接到你的IP地址,你将需要找到一个域名注册商并支付他们。
还可以在专用网络上的本地级别设置DNS,也可以使用主机文件在逐个计算机级别上设置DNS。
路由
服务器的IP地址必须可以从运行客户端的计算机进行路由。
192.168.0.102是一个私有地址,只能在同一局域网上访问。要使Internet上的客户端能够访问它,您需要执行以下任一操作:
发布于 2016-08-08 05:13:09
简而言之,您不能。192.168.0.102不能从Internet访问它是内部IP。
但您也有一些替代方案,例如,如果您希望从主机名访问您的计算机,您可以使用动态DNS服务器。
或者你想在一个壮观的域上测试你的代码,你可以将带有域的192.168.0.102添加到你的主机文件中,然后只有你才能在你的本地计算机上使用这个域。
但是,如果您确实想从本地计算机向Internet提供某些内容,则必须找到DNS服务器服务(如cloudflare),以便将您的域指向您的公共Internet ip,而不是指向192.168.0.102。
发布于 2016-08-08 05:17:14
您可以配置虚拟主机并将服务器名称设置为所需的域名。在此之后,Apache将检查请求,如果对该域名发出了请求,则将使用该虚拟主机。为了使其正常工作,该域应该指向服务器正在运行的IP地址。
如果要测试配置是否有效,请编辑/etc/hosts文件并将该域名添加到127.0.0.1。之后,如果您尝试从浏览器访问该域名,则可以访问该虚拟主机。
更多信息请点击此处:https://httpd.apache.org/docs/current/vhosts/name-based.html
https://stackoverflow.com/questions/38818564
复制相似问题