2015-07-12 38 views
0

为了本文的目的,我正在使用Vagrant启动NGINX(通过Docker,但这并不重要,我不认为)。Vagrant和NGINX只适用于80以外的端口

我流浪如下所示:

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 

我们的目标是能够HIST NGINX上localhost,而不是localhost:8391

我知道,NGINX是在80听,因为映射的,并从在Vagrant中运行CURL。

+0

您可以编辑用'无业游民up'命令的输出你的问题? – Thomasleveil

回答

1

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

作为替代方案,如果您不需要连接到“localhost”,您可以尝试设置专用网络,以使您的Vagrant盒有一个单独的IP地址。有关更多信息,请参见http://docs.vagrantup.com/v2/networking/private_network.html。这应该让你连接到端口80在该IP罚款。

2

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

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

您需要包libcap2-bin,例如使用apt:

  • 命令和apt-get安装libcap2斌
  • 须藤setcap CAP_NET_BIND_SERVICE = + EP /路径/到/ nginx的二进制

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

  • 须藤setcap CAP_NET_BIND_SERVICE = + EP /路径/到/流浪的二进制