我想设置从一台服务器为多个站点提供服务:
1. http://www.example.org => node.js-www (running on port (50000)
2. http://files.example.org => node.js-files (running on port 50001)
Run Code Online (Sandbox Code Playgroud)
直到现在我才发现docker在使用静态ip时进行端口重定向。
实际上可以使用 docker 通过主机名进行端口重定向吗?
我使用免费的亚马逊 EC2 实例。
谢谢博
编辑:我想让多个节点应用程序在同一端口上运行,但提供不同的主机名。
在我的库存中,我定义了这样的主机:
[server1]
141.151.176.223
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个保留server1名称的变量,因为我用它来定义服务器主机名.
inventory_hostname设置141.151.176.223
ansible_hostname为以及inventory_hostname_short设置为148.
要解决此问题,我正在设置我自己的变量,如下所示:
[server1]
141.151.176.223 hostname=server1
Run Code Online (Sandbox Code Playgroud)
但我不满意这种方法.
有任何想法吗?
如果我有一个主机名,例如:http://sample.example.com,我在Javascript中,我window.location.hostname会得到"example.com"或"sample.example.com"吗?
如果没有,我怎样才能获得sample.example.com?
我一直试图弄清楚如何在我的Mac上使用postfix,而且出现了可怕的错误,我似乎无法修复它.
我相信这个问题与启动Postfix有关.
基本上,Mac似乎拒绝更改其主机名.在bash中,用户显示为"admin @(null)",如果我输入'hostname',我也会给出"(null)".
改变从系统首选项中共享的主机名会导致第二个例子来改变(在那里说,例如,"其他用户可以访问此计算机上的共享文件夹,和管理员的所有卷,在法新社://空/或'lion2’. ")但第一个保持为null.
我甚至尝试过手动设置主机名的/ etc/hostconfig但没有任何作用.
是否有其他地方的主机名试图设置,但可能是腐败的?或者包含无效字符或其他内容?
这导致Postfix无法工作并报告:
后缀:警告:valid_hostname:无效字符40(十进制):( null)后缀:致命:无法使用我自己的主机名
拜托,我真的希望有人可以帮我解决这个问题.我一直在努力工作几个小时.
干杯,
斯科特
我试图弄清楚如果没有DNS或主机文件修改,有没有办法让主机名解析为某个IP.
使用C#,我正在从客户端向服务器发出请求,但我必须在请求中使用主机名,以便证书可以正确地验证请求.但是,我的程序是在没有管理员权限的情况下运行的,因此我无法修改主机文件.我有正确的IP和主机名,有没有其他方法可以让计算机解析主机名到IP?
我遇到了与服务器建立连接的问题,该服务器的主机名中有一些重音符号(éèô...).
例如 :
String oUrl = "www.hôtel.fr";
System.out.println(oUrl);
InetSocketAddress isa = new InetSocketAddress(oUrl.toString(), 80);
System.out.println(isa.isUnresolved());
Run Code Online (Sandbox Code Playgroud)
ISA永远不会被解决.它适用于www.google.fr.
我试图URLEncode主机(URLEncoder与UTF-8字符集,所以主机名是www.h%C3%B4tel.fr)没有结果.
有人有线索吗?我在网上找不到任何东西.
谢谢,抱歉我的英语.
我不知道为什么它仍然说HOST_NAME_MAX是隐式声明.
相反,我在网上搜索并执行以下操作来修复它:
#include <netdb.h>
Run Code Online (Sandbox Code Playgroud)
并使用MAXHOSTNAMELEN而不是HOST_NAME_MAX
但是,我不太确定这是一个好方法,以及背后的原因.
python 函数是如何socket.gethostbyname工作的?
具体来说,python如何从完全限定域名中获取ipv4地址?
我想显示当前的 url,例如:https://{hostname}/{pathname}...,相应地,我在其中运行 swagger ui 而不是硬编码的相对路径。有没有可能的解决方案至少可以获取当前主机名?就像这里的屏幕截图一样,相同的 url 以 swagger 和浏览器的地址栏显示。
我已经尝试了几种方法,但似乎 swagger 中的文本只能进行硬编码。
以下问题已部分回答,请参阅下面的解决方案部分。所以我发布这个部分是为了帮助其他人,而且因为我的解决方案还没有真正解决问题。
题
所以,问题是为什么以下技术(使用 python 的平台和套接字库)给出的主机名根据您连接的路由器给出不同的主机名,以及为什么它也不同于计算机名和本地主机名。顺便说一下,这也是非常特定于 mac 的。
首先,我使用的是配备 High Sierra 10.13.6 的 MacBook pro 2015 型号。我使用终端并执行以下操作:
import platform
platform.node()
Run Code Online (Sandbox Code Playgroud)
根据分配给 MacBook 的 IP 地址,这给了我类似“192-168-1-4.tpgi.com.au”的信息。不同的路由器给出不同的结果。我也得到了类似的结果
import socket
socket.gethostname()
Run Code Online (Sandbox Code Playgroud)
它再次返回类似于“192-168-1-4.tpgi.com.au”的内容。
其次,我承认回答类似问题的文章 4271740/how-can-i-use-python-to-get-the-system-hostname
但是,这个问题略有不同,毕竟就我的应用程序的用户而言,主机名应该是他们在系统设置中可以看到的,实际上是不同的。如果我运行:
sudo scutil --get LocalHostName
Run Code Online (Sandbox Code Playgroud)
我得到系统设置中显示的名称(在共享下,它相当混乱地显示了计算机名称和本地主机名,它们也可以不同)。本地主机名与限定语句一起显示:
您本地网络上的计算机可以通过以下网址访问您的计算机:foo.local
所有这一切都是一个问题的原因是我的应用程序使用了主机名,这与 mac 上的本地主机名和计算机名不同。该主机名随后会出现在我们的用户界面中,当然,当其格式为“192-168-1-4.tpgi.com.au”时,它对识别用户的计算机没有帮助。用户很可能希望看到他们的计算机名称,因为这是可见的。在 Mac 上,主机名是不可见的,它可以通过命令设置或获取,但如果遇到这个问题,我们的用户自然不会想到它。
解决方案
所以问题与我相信如何开箱即用地设置 macs 相关。在mac上可以通过终端中使用以下命令来查询主机名:
hostname
192-168-1-4.tpgi.com.au
Run Code Online (Sandbox Code Playgroud)
这将返回实际用于解析 IP 地址的主机名。正如我上面提到的,这与计算机名称不匹配,这在使用我们的应用程序时往往会引起混淆。当我运行以下查询时,我发现了这一点。
sudo scutil --get HostName
HostName: not set
Run Code Online (Sandbox Code Playgroud)
所以我使用以下命令将主机名设置为我为机器识别的名称,如下所示
sudo scutil --set HostName foo
Run Code Online (Sandbox Code Playgroud)
现在,当我运行以下命令时,我得到了我和其他技术含量较低的用户所期望的结果。
import socket
socket.gethostname()
foo
import platform
platform.node()
foo
Run Code Online (Sandbox Code Playgroud)
最后只是为了更好的衡量,从我跑的终端
hostname
foo
Run Code Online (Sandbox Code Playgroud)
结论
好的,虽然我已经写了我找到了一个解决方案,但它并不是我真正需要的解决方案,问题是我需要显示用户设置的计算机名称,而不是主机名。由于我使用的是 …
python hostname computer-name macos-high-sierra macos-mojave