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的正向代理和反向代理的主要内容,如果未能解决你的问题,请参考以下文章