ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

nginx反向代理

2022-01-15 10:02:05  阅读:187  来源: 互联网

标签:name 代理 代理服务器 server nginx 反向 com 监听 listen


1、代理服务器


什么是代理服务器


代理服务器,客户机在发送请求时,不会直接发送给目的服务器,而是先发送给代理服务器,代理服务接受客户机请求之后,再向服务器发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。

 

为什么要使用代理服务器

1)提高访问速度
由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。
2)防火墙作用
由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。
3)通过代理服务器访问不能访问的目标站点
互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的翻墙浏览器就是利用了代理服务器,虽然不能出国,但也可直接访问外网。

2、 正向代理和反向代理

正向代理

架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。

反向代理

反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。

总结:正向代理代理客户端,反向代理代理服务器。 

3、Nginx 反向代理

范例1:使用 nginx 反向代理 www.123.com 直接跳转到192.168.188.128:8080

(1)启动一个 tomcat,浏览器地址栏输入 192.168.188.128:8080,出现如下界面

(2)通过修改本地 host 文件,将 www.123.com 映射到 192.168.188.128

192.168.188.128       www.123.com

讲上述代码添加到hosts文件中

 (3)在nginx.conf配置文件中添加如下配置:

 server {
        listen       80;
        server_name  192.168.188.128;

        location / {
            root   html;
            proxy_pass http://127.0.0.1:8080;
            index  index.html index.htm;
        }


    }

 如上配置,我们监听80端口,访问域名为www.123.com,不加端口号时默认为80端口,故访问该域名时会跳转到127.0.0.1:8080路径上。

  我们在浏览器端输入 www.123.com 结果如下:

 4、Nginx 反向代理相关指令介绍

server块中的配置

(1)listen 

该指令用于配置网络监听。主要有如下三种配置语法结构:

一、配置监听的IP地址

listen address[:port] [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [deferred]
    [accept_filter=filter] [bind] [ssl];

二、配置监听端口

listen port[default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] 
    [deferred] [bind] [ipv6only=on|off] [ssl];

三、配置 UNIX Domain Socket

listen unix:path [default_server]  [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] 
    [deferred] [bind] [ssl];
1 listen *:80 | *:8080 #监听所有80端口和8080端口
2 listen  IP_address:port   #监听指定的地址和端口号
3 listen  IP_address     #监听指定ip地址所有端口
4 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、 setfib=number:Nginx-0.8.44 中使用这个变量监听 socket 关联路由表,目前只对 FreeBSD 起作用,不常用。

6、backlog=number:设置监听函数listen()最多允许多少网络连接同时处于挂起状态,在 FreeBSD 中默认为 -1,其他平台默认为511.

7、rcvbuf=size:设置监听socket接收缓存区大小。

8、sndbuf=size:设置监听socket发送缓存区大小。

9、deferred:标识符,将accept()设置为Deferred模式。

10、accept_filter=filter:设置监听端口对所有请求进行过滤,被过滤的内容不能被接收和处理,本指令只在 FreeBSD 和 NetBSD 5.0+ 平台下有效。filter 可以设置为 dataready 或 httpready 。

11、bind:标识符,使用独立的bind() 处理此address:port,一般情况下,对于端口相同而IP地址不同的多个连接,Nginx 服务器将只使用一个监听指令,并使用 bind() 处理端口相同的所有连接。

12、ssl:标识符,设置会话连接使用 SSL模式进行,此标识符和Nginx服务器提供的 HTTPS 服务有关。

 (2)server_name

该指令用于虚拟主机的配置。通常分为以下两种:

1、基于名称的虚拟主机配置

server_name   name ...;

对于name 来说,可以只有一个名称,也可以有多个名称,中间用空格隔开。而每个名字由两段或者三段组成,每段之间用“.”隔开。

server_name 123.com www.123.com

可以使用通配符“*”,但通配符只能用在由三段字符组成的首段或者尾端,或者由两端字符组成的尾端。

server_name *.123.com www.123.*

还可以使用正则表达式,用“~”作为正则表达式字符串的开始标记。

server_name ~^www\d+\.123\.com$;

该表达式“~”表示匹配正则表达式,以www开头(“^”表示开头),紧跟着一个0~9之间的数字,在紧跟“.123.com”($表示结尾)

匹配的顺序优先级如下:

1 准确匹配 server_name
2 通配符在开始时匹配 server_name 成功
3 通配符在结尾时匹配 server_name 成功
4 正则表达式匹配 server_name 成功

2、基于 IP 地址的虚拟主机配置 

语法结构和基于域名匹配一样,而且不需要考虑通配符和正则表达式的问题。

server_name 192.168.188.1

(3)location

该指令用于匹配 URI。

语法如下:

location [ = | ~ | ~* | ^~] uri {
 
}

1、= :用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。

2、~:用于表示uri包含正则表达式,并且区分大小写。

3、~*用于表示uri包含正则表达式,并且不区分大小写。

4、^~:用于不含正则表达式的 uri前,要求Nginx服务器找到标识 uri和请求字符串匹配度最高的 location后,立即使用此 location 处理请求,而不再使用location块中的正则uri和请求字符串做匹配。

注意:如果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;

标签:name,代理,代理服务器,server,nginx,反向,com,监听,listen
来源: https://blog.csdn.net/weixin_46060794/article/details/122504307

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有