一、前言
最近写了个项目 ,将前端页面和api分开了 ,部署前端的时候由于还是使用的开发服务器,只面向本机开放了端口,出现了一些问题,在服务器上外网访问不到
其实可以全局安装http-server 模块
$npm install -g http-server
$cd dist
$hs
这样是面向全网的可以通过ip来访问到
如果使用nginx或者apache这种服务器指向编译好的页面也是可以的,但是我懒得弄就出现了问题
下面来记录一下踩坑过程(其实是脑子抽了,部署的时候哪能使用dev-server呢)
二、出现问题
在服务器上运行 npm run start,然后正常出现一些提示信息,
但是通过ip或域名访问的时候就是无法访问到。
出现访问被拒绝。
三、尝试解决失败
由于我是刚买的服务器 ,我以为是我的配置问题,我就配置了安全组和防火墙
我的是centos7
centos7的防火墙是firewall (centos6是iptables)
添加开放端口
firewall-cmd --zone=public --add-port=8082/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone=public --query-port=8082/tcp
安全组规则
但是还是不行,
四、找到答案
我正想发工单问客服 。。。在阿里云上看到下面叙述:
[
排查80端口不可用的情况
执行如下命令,查看TCP 80端口是否被监听。
netstat -an | grep 80
系统显示类似如下,如果返回以下任意一种结果,说明已启动TCP 80端口的Web服务。
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
# 全网监听
tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN
# 本机监听
注:本机127.0.0.1监听会导致外网无法访问Web服务,只有本机能访问,需修改为全网监听。
]
看了下我的
果然不对 ,于是我就去webpack的配置文件(config/index.js)里改了host
var path = require('path')
module.exports = {
build: {
index: path.resolve(__dirname, 'dist/index.html'),
assetsRoot: path.resolve(__dirname, 'dist'),
assetsSubDirectory: 'static',
assetsPublicPath: '/',
productionSourceMap: true
},
dev: {
port: 8080,
host:'0.0.0.0' //默认为127.0.0.1在外网无法访问改为0.0.0.0对全网可访问
proxyTable: {}
}
}
nodejs的http模块是不会出现这个问题的。
这样就是全网监听了。
然后就可以访问了 ,大家还是尽量不要用开发服务器放到真正服务器上运行