nginx的正向代理和反向代理

Posted 平平无奇追剧网瘾少女

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx的正向代理和反向代理相关的知识,希望对你有一定的参考价值。

一、简介

nginx (engine x) 是一个高性能的 HTTP 和反向代理服务
1.正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),

然后代理向原始服务器转交请求并将获得的内容返回给客户端;这里客户端需要要进行一些正向代理的设置的。

2.反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求;客户端对代理是无感知的,客户端不需要任何配置就可以访问,

客户端将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,

暴露的是代理服务器地址,隐藏了真实服务器IP地址。

正向代理的代理对象是客户端,反向代理的代理对象是服务端。

 

 

                                                 图解

二、正向代理基本配置及示例

server {
listen 80;
server_name localhost;

resolver 8.8.8.8;     //resolver为DNS解析,即DNS服务器的IP地址,必需,不然访问会报错
location / {
proxy_pass http://$http_host$request_uri;       //proxy_pass配置代理转发到目标url地址或ip加端口,(所有访问根一级的请求全部都代理转发对应到$http_host$httphostrequest_uri去了,$http_host就是要访问的主机名,$request_uri我们后面所加的参数。)

proxy_set_header Host $http_host;     //浏览器直接访问 nginx,获取到的 Host 包含浏览器请求的IP和端口

#proxy_set_header Host $host;       //获取到的 Host 是 $host 的值,没有端口信息
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

 

三、反向代理配置及示例

server {
listen 8080;
server_name localhost;

location / {
proxy_pass http://localhost;
}
}

 proxy_pass 指令

有三种格式:

  • 传输协议+域名+uri (访问路径)
  • 传输协议+ip端口+uri
  • 传输协议+socket

 示例如:

proxy_pass http://www.test.com;
proxy_pass http://192.168.200.100:8080/uri;
proxy_pass unix:/tmp/www.sock;

这里 unix ,http ,https 都是传输协议的种类;域名+uri 和 ip端口+uri 还有 socket 都是访问的路径

socket 一般是某个程序专用的访问端口,访问某个socket就是访问某个特定的程序,所以不需要使用路径

 

 

图解(源)及参考链接:Nginx的正向代理和反向代理 - osc_o7on7g3b的个人空间 - OSCHINA - 中文开源技术交流社区

Nginx配置参数中文说明详解(负载均衡与反向代理)_nginx_脚本之家 (jb51.net)

以上是关于nginx的正向代理和反向代理的主要内容,如果未能解决你的问题,请参考以下文章

Nginx代理——正向反向代理,动静分离和负载均衡

Nginx的正向代理和反向代理

nginx实现正向代理和反向代理

nginx反向代理和正向代理,优缺点

Nginx - 正向代理和反向代理

nginx的正向代理和反向代理