1、正常访问服务器,我们需要直接找到服务器地址,然后通过浏览器进行访问如下图所示
2、如果加入nginx之后,我们需要让nginx来代理服务器,也就是说,用户直接请求地址是nginx,而不是服务器,然后nginx再去访问服务器,这样用户就可以拿到服务器的资源了,如下图所示
优点:可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡(什么是负载均衡),将用户请求分配给多个服务器。
缺点:每一次代理,代理服务器就必须打开两个连接,一个对外,一个对内,因此在并发连接请求数量非常大的时候,代理服务器的负载也就非常大了,在最后代理服务器本身会成为服务的瓶颈。
需求:
启动tomcat,客户端访问nginx,能够访问到tomcat页面。
1、确认服务器上已经安装好jdk和tomcat环境,启动tomcat,端口8080,如图所示
2、配置nginx配置文件
cd /usr/local/nginx/conf/
vi nginx.conf
upstream tomcat1{
server 127.0.0.1:8080;
}
server {
listen 81;
#server_name www.test.com;
location / {
proxy_pass http://tomcat1;
}
}
在nginx.conf配置文件中加入以上代码,这样,我们访问 http://172.16.210.10:81/ 即可访问到tomcat,此为nginx代理了tomcat服务器,称之为反向代理。
此处纪录一下server_name的用途,反向代理中可以不配置该项,
server name 为虚拟服务器的识别路径。因此不同的域名会通过请求头中的HOST字段,匹配到特定的server块,转发到对应的应用服务器中去。
我这里做了一个简单的测试,在linux中修改/etc/hosts配置文件,加入
172.16.210.10 www.test.com
保存,然后reboot,不要用source,会报错,命令不存在。
然后这个时候我们只能在linux上面访问,根据主机名访问,在宿主机中还是要用ip地址访问,不知道是不是我这里没搞清楚,我其实觉着这样是合理的,本身是没有域名访问的,即不存在公网情况。主机名用于局域网中;域名用于公网中。
如果想要在宿主机中通过主机名访问虚拟机,也可以在主机中配置hosts文件,mac和windows我就不多赘述了,
这样就可以访问,如图所示