react前后端完全分离纯前端部署出现问题,服务器拒绝访问

一、前言

最近写了个项目 ,将前端页面和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模块是不会出现这个问题的。
这样就是全网监听了。
然后就可以访问了 ,大家还是尽量不要用开发服务器放到真正服务器上运行

发布了14 篇原创文章 · 获赞 8 · 访问量 6134

猜你喜欢

转载自blog.csdn.net/KangTongShun/article/details/104459773