历尽千辛万苦,我终于将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 | server { |
接下来在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很好地满足了我的需求,我就不折腾啦,感兴趣的朋友自己测试啦。
相关链接
- 每天进步一点点: Linux普通用户下程序绑定特权端口(iptables转发)
- http://nginx.org/en/docs/http/ngx_http_proxy_module.html
- https://stackoverflow.com/questions/6109089/how-do-i-run-node-js-on-port-80
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端口的方法’