正向代理的概念:正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
反向代理的概念:反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样。
两者区别:
从用途 上来讲:
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径(谷歌翻墙)。正向代理还可以使用缓冲特性减少网络使用率。反向代理的典型用途是将 防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。
从安全性 来讲:
正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。
nginx实现反向代理
在实现反向代理之前,先了解一下nginx的常用命令
在nginx/sbin 目录下 通过./ 启动命令
- ./nginx -s stop # 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
- nginx -s quit #平稳关闭Nginx,保存相关信息,有安排的结束web服务。
- nginx -s reload #因改变了Nginx相关配置,需要重新加载配置而重载。
- nginx -s reopen #重新打开日志文件。
- nginx -c filename #为 Nginx 指定一个配置文件,来代替缺省的。
- nginx -t #不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
- nginx -v #显示 nginx 的版本。
- nginx -V #显示 nginx 的版本,编译器版本和配置参数。
在虚拟机中安装jdk与Tomcat
到官网下载jdk与Tomcat在Linux下的安装包
然后通过 cd /usr/local 进入local目录。在local下创建jdk与tomcat的文件夹
mkdir jdk
mkdir tomcat
进入jdk rz文件:jdk-9.0.1_linux-x64_bin.tar.gz
解压
tar –zxvf jdk-9.0.1_linux-x64_bin.tar.gz
配置环境变量:
vim /etc/profile
G进入最后添加:
JAVA_HOME=/usr/local/jdk/jdk-9.0.1
CLASSPATH= J A V A H O M E / l i b / P A T H = JAVA_HOME/lib/ PATH= JAVAHOME/lib/PATH=PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
保存退出
从新加载配置文件
source /etc/profile
进入tomcat rz文件:apache-tomcat-9.0.4.tar.gz
tar -zxvf apache-tomcat-9.0.4.tar.gz
启动:进入bin目录 执行 ./startup.sh
关闭防火墙就 可以在外面直接访问了
进入nginx的配置文件目录
vim nginx.conf
#运行用户
#user nobody;
#启动进程 通常设置与cpu数量相同
worker_processes 1;
#错误日志路径配置
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#记录当前nginx启动的历史进程PID
#pid logs/nginx.pid;
#工作模式及连接数上限,单个后台worker 进程的最大并发连接数
events {
worker_connections 1024;
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
include mime.types;
default_type application/octet-stream;
#日志格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
#上面已经有描述了
sendfile on;
#tcp_nopush on;
#链接超时时间
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#设置代理的服务器列表 这儿暂时一台 指向虚拟机本机的8080tomcat
upstream hellonginx{
server 127.0.0.1:8080;
}
#http服务器
server {
#监听端口80 也就是输入该虚拟机ip就直接访问的端口
listen 80;
#定义域名访问 与windows中配置的虚拟域名对应
server_name nginx.test.com;
#编码格式
charset utf-8;
#代理配置超时、头信息等参数 可以不配置
proxy_connect_timeout 180;
proxy_send_timeout 180;
proxy_read_timeout 180;
proxy_set_header Host $host;
proxy_set_header X-Forwarder-For $remote_addr;
#access_log logs/host.access.log main;
#
#反向代理路径(和upstream绑定)
location / {
proxy_pass http://hellonginx;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
#错误页面配置 可以不配置
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
重启nginx
2.配置windows的虚拟路径
访问域名即可
配置多台tomcat实现负载均衡
复制tomcat,修改新的tomcat的端口号:进入tomcat2配置文件conf中 修改server.xml
保存退出 分别进入tomcat的bin目录 ./startup.sh启动
修改nginx配置文件,有几个服务器就添加几个,weight代表权重指定轮询几率
重启nginx
./nginx -s reload