[TOC]
nginx反向代理tomcat服务案例
安装两台nginx服务才能完成该案例
实验主机:
10.0.0.20 java程序服务器
10.0.0.21 nginx反向代理服务器
配置之前 tomcat服务器 的默认启动访问截图:
将第一台服务器10.0.0.21 作为反向代理服务器的配置
修改配置文件:vim nginx.conf
===============================反向代理配置实例======================================
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream 10.0.0.20 { #10.0.0.20为代理池名称,可以写英文名称,这里为了好记忆
server 10.0.0.20:8080; #反向代理池配置
}
server {
listen 80;
server_name 10.0.0.21; #本机访问IP
location / {
proxy_pass http://10.0.0.20; #反向代理池
proxy_set_header host $host; #反向代理ip
proxy_set_header X-Real-IP $remote_addr; #TCP连接的远端地址
proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for; #获取后端真实IP
proxy_pass http://10.0.0.20; #添加upstream池 名称(可以为英文,写IP为了好分辨)
}
}
===============================反向代理配置实例======================================
注意: 添加这几段proxy配置是为了获取后端服务器地址,修改响应头
proxy_pass http://10.0.0.20; #反向代理池
proxy_set_header host $host; #反向代理ip
proxy_set_header host $host; #反向代理ip
proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for; #获取后端真实IP
以上配置完成后重新载入配置:
[root@leilei conf]# nginx -t #检查语法
nginx: the configuration file /application/nginx-1.14/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.14/conf/nginx.conf test is successful
[root@leilei conf]# nginx -s stop #停止服务
[root@leilei conf]# nginx #启动服务
检查端口:
[root@leilei ~]# netstat -lntup
此时本机只有80端口并没有 tomcat中的8080端口存在,现在尝试访问10.0.0.21 ,是否可以访问到tomcat
如果可以访问到tomcat,则代表反向代理配置成功
. 10. 0.0.21反向代理10.0.0.20的tomcat 8080端口成功截图:
nginx反向代理缓存配置
一般用户访问web服务时,有很多内容是不会繁盛变化的,他门是静态内容,如果每次静态内容都
交由后端处理,这样会加大后端服务器压力,通过反向代理的缓存功能,我们可以把不变的内容都
存在反向代理服务器,在用户请求这些静态内容的时候,由反向代理直接向用户提供响应,这样可
以减轻后端服务器压力,下面讲解缓存的配置方法
10.0.0.21 反向代理服务
10.0.0.20 是我们后端的tomcat服务
反向代理缓存配置实例:
vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
##第一步: http模块中定义缓存cache名为my_cache,并把缓存大小定义为100MB
client_max_body_size 100M;
proxy_cache_path /tmp/nginxcache levels=1:2 keys_zone=my_cache:100m max_size=10g
inactive=100m use_temp_path=off;
##定义缓存cache
upstream 10.0.0.20 {
server 10.0.0.20:8080;
}
server {
listen 80;
server_name 10.0.0.21;
location / {
##第二步 反向代理缓存配置
proxy_set_header host $host; #反向代理ip
proxy_set_header X-Real-IP $remote_addr; #TCP连接的远端地址
proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for; #获取后端真实IP
proxy_cache my_cache; #调用http块定义的一个缓存
proxy_cache_key $host$uri$is_args$args; #指明一个key
proxy_cache_valid 200 304 302 1d; #定义哪些响应不返回
##反向代理缓存配置
proxy_pass http://10.0.0.20;
}
}
为了更清晰的知道缓存是否生效 我们可以在 10.0.0.21的反向代理服务器中查看缓存的文件是否存在
定义的缓存目录为:/tmp/nginxcache
[root@leilei conf]# ls /tmp/nginxcache #直接查看没有任何文件
访问一次后再次查看:
[root@leilei conf]# tree -L 2 /tmp/nginxcache/
/tmp/nginxcache/
├── 0
│ ├── 7e
│ └── e1
├── 3
│ └── a9
├── 5
│ └── b0
├── 7
│ └── 6b
├── 9
│ └── c3
├── b
│ └── 9d
└── f
└── 43
15 directories, 0 files
此时已经生成了缓存文件
看到缓存文件后,我们可以把后端的tomcat关闭,再次尝试访问,以证明我们的缓存服务器配置成功
[root@leilei ~]# ifconfig eth0|sed -n 2p
inet 10.0.0.20 netmask 255.255.255.0 broadcast 10.0.0.255
[root@leilei ~]# /application/tomcat/bin/shutdown.sh
Using CATALINA_BASE: /application/tomcat
Using CATALINA_HOME: /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/temp
Using JRE_HOME: /server/tools/jdk1.8.0_60
Using CLASSPATH: /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
[root@leilei ~]# ps -ef |grep java
root 33285 33029 0 09:04 pts/0 00:00:00 grep --color=auto java
再次尝试访问 10.0.0.21,看源服务器关闭的情况下,是否还能够再次访问,如果可以访问,则代表缓存成功
此时可以看出,我们的缓存服务器配置成功。即使源服务器 10.0.0.20中的tomcat服务被停止,内容被缓存到了10.0.0.21中的缓存服务器中,我们以然可以通过这台反向代理服务器获取到内容


发表评论