Vagrant和NGINX只能在80以外的端口上工作

为了这篇文章的目的,我正在使用Vagrant来启动NGINX(通过Docker,但这并不重要,我不认为)。

我的stream浪者看起来像下面这样:

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 localhost:8391

我知道NGINX正在监听80,因为这个映射,以及在Vagrant中运行CURL。

您可以使用setcap启用1024以下的端口,用于特定二进制文件的非root用户。

这只能在Linux下运行,并且必须应用于Vagrant框,才能使用框内的端口80,以及您的主机使用主机上的端口80。

你需要包libcap2-bin,例如apt:

  • sudo apt-get install libcap2-bin
  • sudo setcap cap_net_bind_service = + ep / path / to / nginx-binary

之后允许NGINX使用箱内的80端口作为用户stream浪者。 现在在你的主机上启用Vagrant设置。

  • sudo setcap cap_net_bind_service = + ep / path / to / vagrant-binary

一般情况下,使用Vagrant时不能绑定到主机上的端口1024或以下,除非以root身份运行它。 (与其他应用程序一样,显然不build议以root身份运行Vagrant。)

或者,如果您不需要连接到“localhost”,您可以尝试设置专用networking,以便您的Vagrant Box具有单独的IP地址。 有关更多信息,请参见http://docs.vagrantup.com/v2/networking/private_network.html 。 这应该让你连接到80端口的IP罚款。