开发阶段中的环境
开发环境:自己的电脑
测试环境:提供给测试人员使用的环境
生产环境:项目最终发布上线的环境
预发布环境:数据是和生成环境的数据一致,运行最新的项目代码进去测试
每个环境的访问地址是不同的,可能因为访问地址不同导致一些问题的产生,所以,为了避免该类问题的产生,可以使不同的环境访问地址完全一致,通过域名访问即可实现。
通过域名访问后台系统
现在:http://127.0.0.1:8081/rest/page/index
需要通过manage.taoao.com访问。
http://manage.taotao.com:8081/rest/page/index
Hosts
用户访问淘宝:
用户 -> www.taobao.com -> 本机的hosts文件中查找域名映射,如果查找到就返回 ->浏览器通过域名到DNS查找服务器ip地址 -> 执行访问
windows下的hosts文件所在路径:c:\windows\system32\drivers\etc
Linux下的hosts文件所在路径: /etc/hosts
实现
1、 修改本地的hosts,将manage.taotao.com映射到127.0.0.1
效果:
但是,如果后台系统占用80端口,其他系统就无法占用80,也就是无法通过域名直接访问,必须通过域名:端口访问http://www.taotao.com:8081/,
问题是:导致,生产环境和开发环境的访问路径是不同的。
如何解决以上问题? – 通过nginx来解决。
Nginx简介
目前电商和互联网系统都会采用nginx + 应用服务器(tomcat).
Web服务器分2类:
1、 web服务器
a) Apache 服务器
b) Nginx
c) IIS
2、 web应用服务器
a) tomcat
b) resin
c) jetty
区分:web服务器不能解析jsp等页面,只能处理js、css、html等静态资源。
并发:web服务器的并发能力远高于web应用服务器。
淘宝:
京东:(也是nginx,将服务名称改为JDWS)
使用
三个命令:(在 CMD 中执行)
启动:start nginx.exe
停止:nginx.exe -s stop
重新加载:nginx.exe -s reload
只有2个进程nginx才算是真正的启动成功:
Nginx的配置
先把我们的项目端口改为8081
修改nginx配置:
server {
listen 80;
server_name manage.taotao.com;
#charset koi8-r;
#access_log logs/host.access.log main;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
测试
现在的请求:
用户 -> Nginx -> tomcat
启动nginx的注意事项
1、 其他服务占用80端口,会导致nginx启动失败,检查的方法是 cmd nginx.exe
2、 Nginx的路径不能包含中文
代理
正向代理
用户 -> 代理 -> google
反向代理
用户 -> nginx -> tomcat
解释:
Tomcat根本不知道请求的来源,只知道所有的请求都是来源于Nginx,不知道真正的来源。