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罚款。
- 无法备份docker MariaDB容器的持久存储容器
- 为什么由docker stack创build的容器有3个ip地址,它们与服务内部检查有所不同
- Docker错误:standard_init_linux.go:185:exec用户进程导致“没有这样的文件或目录”
- AWS弹性负载均衡器无法通过SSLencryption连接到MySQL容器
- 拉图像给docker.io:禁止
- docker工作 – 撰写不工作
- 当我在Kubernetes中使用Deployment时,apps / v1beta1和extensions / v1beta1有什么区别?
- 有没有办法将Docker镜像合并到一个容器中?
- docker工人build立一个模板Dockerfile