linux - 用于端口侦听的 Vagrant IP 地址设置
问题描述
我在我的 vagrant 实例中运行这个命令:
printf 'HTTP/1.1 302 Moved\r\nLocation: https://www.eff.org/' | nc -l 2345
在我的主机上,我想访问<ip of my vagrant server>:2345
并被重定向到https://www.eff.org/。重定向不会发生,浏览器只是继续加载。
我的流浪文件:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "public_network"
end
如何设置 Vagrantfile 并确定 vagrant Linux 服务器的 IP 地址,以便在使用端口 2345 的主机上的浏览器中使用?
我努力了:
curl ifconfig.me
, 得到:46.128.200.193
hostname -i
, 得到:2a02:2455:25f:e000:a00:27ff:febd:cd6c%4
10.0.2.15
192.168.33.10
192.168.0.16
ifconfig
, 得到:
eth0 Link encap:Ethernet HWaddr 08:00:27:5f:bb:e6
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe5f:bbe6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:815 errors:0 dropped:0 overruns:0 frame:0
TX packets:590 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:83632 (83.6 KB) TX bytes:80621 (80.6 KB)
eth1 Link encap:Ethernet HWaddr 08:00:27:c0:4e:f3
inet addr:192.168.33.10 Bcast:192.168.33.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fec0:4ef3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7 errors:0 dropped:0 overruns:0 frame:0
TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:819 (819.0 B) TX bytes:2040 (2.0 KB)
eth2 Link encap:Ethernet HWaddr 08:00:27:bd:cd:6c
inet addr:192.168.0.16 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: 2a02:2455:25f:e000:a00:27ff:febd:cd6c/64 Scope:Global
inet6 addr: fe80::a00:27ff:febd:cd6c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:412 errors:0 dropped:0 overruns:0 frame:0
TX packets:103 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:31706 (31.7 KB) TX bytes:8356 (8.3 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:888 (888.0 B) TX bytes:888 (888.0 B)
在我的主机上,我尝试在浏览器中访问:
192.168.33.10:2345
, 得到:
GET / HTTP/1.1
Host: 192.168.33.10:2345
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:77.0) Gecko/20100101 Firefox/77.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
10.0.2.15:2345
,一无所获46.128.200.193:2345
,一无所获
但是到目前为止,还没有 Vagrantfile 的设置和 ip 地址与端口 2345 的组合将我重定向到 eff.org。
解决方案
我有不同的方法。我正在使用 python 简单的 http 服务器模块。
代码从其他答案中使用
#!/usr/bin/python
import SimpleHTTPServer
import SocketServer
class myHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
self.send_response(301)
self.send_header('Location','http://www.eff.org')
self.end_headers()
theport = 1234
Handler = myHandler
pywebserver = SocketServer.TCPServer(("", theport), Handler)
print "Python based web server. Serving at port", theport
pywebserver.serve_forever()
关于多个接口。
确保输出
sudo lsof -i -P -n | grep LISTEN
*:1234 即所有接口都用于此端口。
web_fwd.p 2594 dev 3u IPv4 60354 0t0 TCP *:1234 (LISTEN)
推荐阅读
- performance - 如果 GOMAXPROCS 太大怎么办?
- matlab - 如何创建坐标矩阵以及如何计算距离 b/w 坐标
- reactjs - 无法在反应原生中使用 axios 映射动态 json 数据以反应原生 swiper 滑块
- java - 基于主查询 JPA Criteria API 创建子查询
- python - 如何批量删除 CSV 文件中的列中不需要的信息?
- java - 如何使用 livy 提交带有关键字参数的 jar?
- database-design - 创建关系数据库来存储问题及其选项
- javascript - Laravel:当您从 javascript 中的控制器获取 json 数据时如何进行分页?
- html - 是否有在不受支持的浏览器上禁用网站的库?
- sql - 如何递归查找表中的所有匹配行?