为了这篇文章的目的,我使用Vagrant启动NGINX(通过Docker,但这并不重要,我不会想到)。
My Vagrant如下所示:
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
#Assign Box and VM Properties
config.vm.box = "ubuntu/trusty64"
config.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 2
end
# Network
config.vm.network "forwarded_port", guest:80, host: 80 #--> DOESN'T WORK localhost
config.vm.network "forwarded_port", guest:80, host:8391 #--> WORKS localhost:8391
# Provision
config.vm.provision :shell, inline: "sudo apt-get update"
config.vm.provision :docker
end
目标是能够在localhost
而不是localhost:8391
我知道NGINX正在监听80因为映射,以及在Vagrant中运行CURL。
答案 0 :(得分:2)
您可以使用setcap启用1024以下的端口,以便非root用户使用特定的二进制文件。
这仅适用于Linux,必须应用于Vagrant框,使用框内的端口80和主机,才能在主机上使用端口80。
您需要包libcap2-bin,例如与apt:
然后允许NGINX在框内使用端口80作为用户流浪者。现在,在主机上启用Vagrant设置。
答案 1 :(得分:1)
通常,在使用Vagrant时,无法绑定到主机上的端口1024或以下端口,除非您以root用户身份运行它。 (与其他应用程序一样,显然不建议以root身份运行Vagrant。)
作为替代方案,如果您不需要专门连接到“localhost”,则可以尝试设置专用网络,以便您的Vagrant框具有单独的IP地址。有关详细信息,请参阅http://docs.vagrantup.com/v2/networking/private_network.html。这应该让你连接到该IP上的端口80。