Vagrant和NGINX仅适用于80以外的端口

时间:2015-07-12 15:33:07

标签: nginx docker vagrant vagrantfile

为了这篇文章的目的,我使用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

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

2 个答案:

答案 0 :(得分:2)

您可以使用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作为用户流浪者。现在,在主机上启用Vagrant设置。

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

答案 1 :(得分:1)

通常,在使用Vagrant时,无法绑定到主机上的端口1024或以下端口,除非您以root用户身份运行它。 (与其他应用程序一样,显然不建议以root身份运行Vagrant。)

作为替代方案,如果您不需要专门连接到“localhost”,则可以尝试设置专用网络,以便您的Vagrant框具有单独的IP地址。有关详细信息,请参阅http://docs.vagrantup.com/v2/networking/private_network.html。这应该让你连接到该IP上的端口80。