Vagrant 和 NGINX 仅适用于 80 以外的端口
Posted
技术标签:
【中文标题】Vagrant 和 NGINX 仅适用于 80 以外的端口【英文标题】:Vagrant and NGINX only works on ports other than 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
命令的输出来编辑您的问题吗?
【参考方案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。
【讨论】:
以上是关于Vagrant 和 NGINX 仅适用于 80 以外的端口的主要内容,如果未能解决你的问题,请参考以下文章
仅针对 nginx 上的特定 url 使用 https 重定向