【问题标题】:Vagrant and NGINX only works on ports other than 80Vagrant 和 NGINX 仅适用于 80 以外的端口
【发布时间】:2015-09-30 21:32:36
【问题描述】:

出于本文的目的,我使用 Vagrant 来启动 NGINX(通过 Docker,但我认为这并不重要)。

我的 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

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

【问题讨论】:

  • 您可以使用vagrant up 命令的输出来编辑您的问题吗?

标签: nginx docker vagrant vagrantfile


【解决方案1】:

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

这仅适用于 Linux,并且必须应用于 Vagrant 盒子,才能使用盒子内的端口 80,以及您的主机,才能使用主机上的端口 80。

您需要软件包 libcap2-bin,例如适当的:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多