网站设计规划范文,去除wordpress主题头部作者信息,金阊公司网站建设电话,软文自助发稿平台oem一、什么是代理
1、正向代理(forward proxy)
正向代理#xff0c;简单的说就像是一个跳板#xff0c;它隐藏了真实的请求客户端#xff08;IP#xff09;#xff0c;服务端不知道真实的客户端是谁#xff0c;客户端请求的服务都由代理服务器来代替请求。
举个例子来说…一、什么是代理
1、正向代理(forward proxy)
正向代理简单的说就像是一个跳板它隐藏了真实的请求客户端IP服务端不知道真实的客户端是谁客户端请求的服务都由代理服务器来代替请求。
举个例子来说众所周知国内的用户无法访问谷歌但是因为某些原因我们必须要访问谷歌这个时候我们会有一个“梯子”既然我们无法直接访问谷歌我们就麻烦“梯子”帮助我们访问谷歌。 事实上我们还是没法访问谷歌只是这个“梯子”能够访问它只是将访问结果返回给我们而已。这里的“梯子”就是一个正向代理它是帮助客户端也就是我们用户来代理的。 正向代理对象是客户端客户端转发给代理客户端由代理客户端去真正访问服务器正向代理隐藏了真实客户端的身份IP。 客户端转发代理客户端的服务器-----------服务器当正向代理出现多个请求客户端时如图所示 简单来说正向代理指的是一对一或者多对一服务端不知道发送请求的客户端是哪些人。
2、反向代理(reverse proxy)
反向代理恰好跟正向代理相反。反向代理指的是一对多或者多对多客户端不知道响应请求的服务端是哪些服务。 反向代理对象是服务端客户端真正访问的是代理服务器反向代理隐藏了真实的服务端的身份IP。 客户端-----------代理服务器的服务器转发服务器反向代理一般是负载均衡Load Balance的一个原理。代理服务器会将大量的请求分摊给多台提供相同服务的服务器或集群。 负载均衡的策略跟 nginx使用的负载均衡算法有关默认使用轮询算法nginx还提供各种参数给负载均衡调优。
3、反向代理和正向代理的区别
两者根本的区别在于代理的对象不一样正向代理代理的对象是客户端反向代理代理的对象是服务端。 总而言之
正向代理为客户端服务对服务端是透明的。反向代理为服务端服务对客户端是透明的。梯子的原理就是正向代理负载均衡的原理就是反向代理。
二、Nginx实现反向代理
1、Tomcat实战
实现效果打开浏览器在浏览器的地址栏中输入www.proxy123.com回车之后就会访问 Linux系统中运行的 Tomcat服务器的主页面。
1.1 安装启动Tomcat
Tomcat依赖JDK。Linux 安装JDK详细步骤https://blog.csdn.net/qq_42402854/article/details/108164936
然后在 Linux中安装 TomcatTomcat使用端口号8080。一次执行下面命令
# 下载Tomcat
wget https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.105/bin/apache-tomcat-7.0.105.tar.gz# 解压即安装
tar -zxvf apache-tomcat-7.0.105.tar.gz# 移动到local目录下
mv apache-tomcat-7.0.105 /usr/local/tomcat# 启动Tomcat
/usr/local/tomcat/bin/startup.sh如果需要关闭防火墙systemctl stop firewalld如果需要关闭tomcat/usr/local/tomcat/bin/startup.sh
浏览器直接访问 Tomcat服务器192.168.xxx.xxx:8080 1.2 修改 Windows中的 hosts域名映射
打开 C:\Windows\System32\drivers\etc\在该目录下有一个hosts文件将该文件进行拷贝备份避免修改后不知道怎么改回去打开hosts文件添加以下配置代码
#虚拟机域名 映射的网址
192.168.xxx.xxx www.proxy123.com1.3 修改Nginx的配置文件并启动Nginx
第一步编辑nginx.conf
编辑内容如下vi /usr/local/nginx/conf/nginx.conf
server {listen 80; # 指定虚拟主机的服务端口server_name 192.168.xxx.xxx; # 指定虚拟主机的IP或者外网域名# URL匹配location / {root html #定位localtion匹配的url资源路径proxy_pass http://127.0.0.1:8080; # 代理转发index index.html index.htm; # 定义页面显示html}
}配置文件不熟悉的可查看文章https://blog.csdn.net/qq_42402854/article/details/132843413
第二步Nginx启动
编辑完成之后保存退出启动Nginx命令/usr/local/nginx/sbin/nginx
如果Nginx已经启动那么就使用重新加载配置文件的命令/usr/local/nginx/sbin/nginx -s reload
[rootcentos7 jdk]# /usr/local/nginx/sbin/nginx
nginx: [emerg] open() /var/run/nginx/nginx.pid failed (2: No such file or directory)
[rootcentos7 sbin]# mkdir /var/run/nginx/
[rootcentos7 sbin]# /usr/local/nginx/sbin/nginx
[rootcentos7 sbin]#Nginx启动报错如下nginx启动报错nginx: [error] open() “/var/run/nginx/nginx.pid“ failed (2: No such file or directory) 的解决https://blog.csdn.net/qq_39244882/article/details/120058404
第三步浏览器访问OK
启动 Nginx和 Tomcat之后在浏览器通过 www.proxy123.com就可以通过 nginx代理访问 Tomcat服务的界面啦。 第四步关闭服务
关闭Tomcat命令/usr/local/tomcat/bin/shutdown.sh
关闭Nginx命令/usr/local/nginx/sbin/nginx -s stop
三、Nginx反向代理相关指令
1、listen指令
该指令用于配置网络监听。主要有如下三种配置语法结构
1.1 配置监听的IP地址
listen address[:port] [default_server] [setfibnumber] [backlognumber] [rcvbufsize] [sndbufsize] [deferred][accept_filterfilter] [bind] [ssl];1.2 配置监听端口
listen port[default_server] [setfibnumber] [backlognumber] [rcvbufsize] [sndbufsize] [accept_filterfilter] [deferred] [bind] [ipv6onlyon|off] [ssl];1.3 配置 UNIX Domain Socket
listen unix:path [default_server] [backlognumber] [rcvbufsize] [sndbufsize] [accept_filterfilter] [deferred] [bind] [ssl];上面的配置看似比较复杂其实使用起来是比较简单的
listen *:80 | *:8080 #监听所有80端口和8080端口
listen IP_address:port #监听指定的地址和端口号
listen IP_address #监听指定ip地址所有端口
listen port #监听该端口的所有IP连接下面分别解释每个选项的具体含义 1、address:IP地址如果是 IPV6地址需要使用中括号[] 括起来比如[fe80::1]等。 2、port:端口号如果只定义了IP地址没有定义端口号那么就使用80端口。 3、path:socket文件路径如 var/run/nginx.sock等。 4、default_server:标识符将此虚拟主机设置为 address:port 的默认主机。在 nginx-0.8.21 之前使用的是 default 指令。 5、 setfibnumber:Nginx-0.8.44 中使用这个变量监听 socket 关联路由表目前只对 FreeBSD 起作用不常用。 6、backlognumber:设置监听函数listen()最多允许多少网络连接同时处于挂起状态在 FreeBSD 中默认为 -1,其他平台默认为511。 7、rcvbufsize:设置监听socket接收缓存区大小。 8、sndbufsize:设置监听socket发送缓存区大小。 9、deferred:标识符将accept()设置为Deferred模式。 10、accept_filterfilter:设置监听端口对所有请求进行过滤被过滤的内容不能被接收和处理本指令只在 FreeBSD 和 NetBSD 5.0 平台下有效。filter 可以设置为 dataready 或 httpready 。 11、bind:标识符使用独立的bind() 处理此address:port一般情况下对于端口相同而IP地址不同的多个连接Nginx 服务器将只使用一个监听指令并使用 bind() 处理端口相同的所有连接。 12、ssl:标识符设置会话连接使用 SSL模式进行此标识符和Nginx服务器提供的 HTTPS 服务有关。
2、server_name指令
该指令用于虚拟主机的配置。通常分为以下两种
2.1 基于名称的虚拟主机配置 语法格式如下server_name name …; 1对于name 来说可以只有一个名称也可以有多个名称中间用空格隔开。而每个名字由两段或者三段组成每段之间用“.”隔开。
server_name 123.com www.123.com2也可以使用通配符“*”但通配符只能用在由三段字符组成的首段或者尾端或者由两端字符组成的尾端。
server_name *.123.com www.123.*3还可以使用正则表达式用“~”作为正则表达式字符串的开始标记。
server_name ~^www\d\.123\.com$;该表达式“~”表示匹配正则表达式以www开头“^”表示开头紧跟着一个0~9之间的数字在紧跟“.123.co”最后跟着“m”($表示结尾)。 以上匹配的顺序优先级如下
1、准确匹配 server_name
2、通配符在开始时匹配 server_name 成功
3、通配符在结尾时匹配 server_name 成功
4、正则表达式匹配 server_name 成功2.2 基于 IP 地址的虚拟主机配置 语法格式如下server_name 192.168.1.1 语法结构和基于域名匹配一样而且不需要考虑通配符和正则表达式的问题。
3、location指令
该指令用于匹配 URL。语法格式如下
1 location [ | ~ | ~* | ^~] uri {
2
3 }URL匹配通配符
/通用匹配任何请求都可以匹配开头表示精确匹配用于不含正则表达式的uri前要求请求字符串与uri严格匹配如果匹配成功就停止继续向下搜索并立即处理该请求。~用于表示uri包含正则表达式并且区分大小写。~*用于表示uri包含正则表达式并且不区分大小写。^~用于不包含正则表达式的uri前要求nginx服务器找到标识uri和请求字符串匹配度最高的location后立即使用此location处理请求而不再使用location块中的正则uri与请求字符串做匹配。!~和!~*分别表示区分大小写不匹配和不区分大小写不匹配的正则 优先级 -- ^~ -- /* #当有多个包含/进行正则匹配时选择正则表达式最长的location配置执行。
多个location配置的情况下匹配顺序为 首先匹配 其次匹配^~, 其次是按文件中顺序的正则匹配最后是交给 /通用匹配。当有匹配成功时候停止匹配按当前匹配规则处理请求。
注意如果uri包含正则表达式则必须要有 ~ 或者 ~ 标识。
4、proxy_pass指令
该指令用于设置被代理服务器的地址。可以是主机名称、IP地址加端口号的形式。 语法结构如下proxy_pass URL; URL 为被代理服务器的地址可以包含传输协议、主机名称或IP地址加端口号URI等。例如
proxy_pass http://www.123.com/uri;5、index指令
该指令用于设置网站的默认首页。 语法结构如下index filename …; 后面的文件名称可以有多个中间用空格隔开。例如
index index.html index.jsp;通常该指令有两个作用
一个是用户在请求访问网站时请求地址可以不写首页名称一个是可以对一个请求根据请求内容而设置不同的首页。 – 求知若饥虚心若愚。