每天进步一点点: 将node.js 应用绑定到80端口的方法

每天进步一点点: 将node.js 应用绑定到80端口的方法

历尽千辛万苦,我终于将node.js的应用运行了起来,看起来貌似一切正常的样子。

可是新的问题来了,别人的网站都直接可以通过域名访问,并且一般都是80或者443(HTTPS)端口,而我这个是8080端口又是怎么回事?又该如何解决呢?


(图源 :pixabay)

直接换端口的方式肯定是行不通的啦,因为Linux下是不允许普通用户应用绑定特权端口(0至1023)的,那就要想别的方法了。

iptables转发

方法之一是使用iptables转发,以前做过类似的操作,执行下列指令即可:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

当然,除此之外,要确定已经配置了允许转发:

sudo vi /etc/sysctl.conf

在其中将net.ipv4.ip_forward = 0修改为net.ipv4.ip_forward = 1,然后执行如下指令使其生效:

sudo sysctl -p

Nginx

另外一种方法是使用Nginx。

如果还没有安装Nginx,那么可以使用如下指令安装:

sudo apt-get install nginx

安装完成之后,浏览器中直接访问IP,可以看到默认站点已经生效。

接下来我们创建一个简单的配置文件:

sudo vi /etc/nginx/sites-available/myapp

大致内容如下:

1
2
3
4
5
6
7
8
9
server {
listen 80;
server_name myapp.com;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://127.0.0.1:8080";
}
}

接下来在sites-enabled目录下创建指向我们配置文件的软链接

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/myapp

还有删除指向默认配置文件的软链接

sudo rm /etc/nginx/sites-enabled/default

重启Nginx,使我们的配置文件激活

sudo service nginx restart

再次在浏览器中直接访问IP,啊哈,我们的应用正常显示啦(80端口)。

其它方法

除了上述两个办法以外,还有一些其它方法可以达成此目标,我了解到的有如下可行办法:

  • setcap
  • authbind
  • SSH转发

因为nginx很好地满足了我的需求,我就不折腾啦,感兴趣的朋友自己测试啦。

相关链接


Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh and click VOTE

Vote @oflyhigh via Steemconnect
Thank you!

This page is synchronized from the post: ‘每天进步一点点: 将node.js 应用绑定到80端口的方法’

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×