在本地npm start后可以访问,部署到服务器后,就不能访问了
我在segmentfault看到Angular是因为
打包后成了静态文件,服务器会根据路径寻找文件,找不到就404
https://segmentfault.com/q/1010000007934408
想问下这个有什么解决办法吗
服务器使用的CentOS+Nginx
已解决:
首先,在Nginx的配置文件nginx.conf(CentOS中我安装在/usr/local/nginx/conf/下)中新键一个虚拟主机server。其实就是在一个文件中加一小段代码
配置如下:
参考:Nginx配置文件简单教程
server {
listen 80;
server_name ***.com; #虚拟主机名字,对应域名或IP
root /data/site/projectname;#项目存放的根路径
location / {
try_files $uri $uri/ /index.html =404; #这里一定要设置
}
}
这里的location是必须的,因为是单页面应用,所有的*.com下的请求都重定向到index.html去处理。
服务器设置完成后,项目中还有需要注意的地方
目前我遇到两点
1、项目的index.css文件是相对路径
2、因为我自己需求,在进入url对应页面时需要改变某些model的state来展示不同的页面内容,所以需要先发起dispatch请求来预设state值,而某些项目是动态加载模块,dispatch所需要的模块还没被加载,所以无法发起dispatch,但这在开发环境中是不受影响的。然而在生产环境中却不行。
自己的项目演示地址:http://wuyunjiang.cn
总结:其实是通过反向代理的方式,将域名下所有的请求都重定向到index.html,再用index.js来处理
可能有些地方理解有问题,请指出,谢谢
已解决:
首先,在Nginx的配置文件nginx.conf(CentOS中我安装在/usr/local/nginx/conf/下)中新键一个虚拟主机server。其实就是在一个文件中加一小段代码
配置如下:
参考:Nginx配置文件简单教程server { listen 80; server_name ***.com; #虚拟主机名字,对应域名或IP root /data/site/projectname;#项目存放的根路径 location / { try_files $uri $uri/ /index.html =404; #这里一定要设置 } }这里的location是必须的,因为是单页面应用,所有的*.com下的请求都重定向到index.html去处理。
服务器设置完成后,项目中还有需要注意的地方
目前我遇到两点
1、项目的index.css文件是相对路径
2、因为我自己需求,在进入url对应页面时需要改变某些model的state来展示不同的页面内容,所以需要先发起dispatch请求来预设state值,而某些项目是动态加载模块,dispatch所需要的模块还没被加载,所以无法发起dispatch,但这在开发环境中是不受影响的。然而在生产环境中却不行。
自己的项目演示地址:http://wuyunjiang.cn
总结:其实是通过反向代理的方式,将域名下所有的请求都重定向到index.html,再用index.js来处理
可能有些地方理解有问题,请指出,谢谢
那请问你怎么解决问题1的呢
Most helpful comment
已解决:
首先,在Nginx的配置文件nginx.conf(CentOS中我安装在/usr/local/nginx/conf/下)中新键一个虚拟主机server。其实就是在一个文件中加一小段代码
配置如下:
参考:Nginx配置文件简单教程
这里的location是必须的,因为是单页面应用,所有的*.com下的请求都重定向到index.html去处理。
服务器设置完成后,项目中还有需要注意的地方
目前我遇到两点
1、项目的index.css文件是相对路径
2、因为我自己需求,在进入url对应页面时需要改变某些model的state来展示不同的页面内容,所以需要先发起dispatch请求来预设state值,而某些项目是动态加载模块,dispatch所需要的模块还没被加载,所以无法发起dispatch,但这在开发环境中是不受影响的。然而在生产环境中却不行。
自己的项目演示地址:http://wuyunjiang.cn
总结:其实是通过反向代理的方式,将域名下所有的请求都重定向到index.html,再用index.js来处理
可能有些地方理解有问题,请指出,谢谢