nginx 反向代理配置(二)
上一篇文章主要是对 nginx 各个模块做了一个介绍,以及对什么是反向代理在文章开头做了一个简单介绍,这篇文章我们主要来看下如何进行 nginx 反向代理的配置
proxy 模块
nginx 通过 proxy 模块将客户端请求代理至上游服务器,此时,nginx 与上游服务器之间是通过 http 协议连接的。nginx 在实现反向代理功能时最重要的指令是 proxy
_pass
1,proxy_pass URL;
设置后端服务器的协议和地址,这条指令可以设置的协议是 http 或 https,而地址可以使用域名或 ip 地址加端口号的形式来定义,如:
proxy_pass http://locahost:8000/uri;
当然设置反向代理也可以和负载均衡配合使用,此时,使用方式为:proxy_pass + http:// upstream 名称
如果 proxy_pass 里面没有使用 URI,则传送到后端服务器的请求 URI 一般是客户端请求的原始 URI;如果 proxy_pass 里面使用了 URI,则客户端请求 URI 和配
置路径匹配的部分会被替换为指令中定义的 URI,我们来看一个简单例子:
若 nginx 接收到的客户端请求 URI 是 /name/a.html
proxy_pass 不使用 URI:
location /name/ {
proxy_pass http://192.168.30.20;
} 传送到后端服务器的 URI ,http://192.168.30.20/name/a.html proxy_pass 使用 URI:
location /name/ {
proxy_pass http://192.168.30.20/remote/;
}
传送到后端服务器的 URI,http://192.168.30.20/remote/a.html; location /name/ {
proxy_pass http://192.168.30.20/;
}
传送到后端服务器的 URI,http://192.168.30.20/a.html
在这里有一个需要注意的细节,地址末尾带有斜线,实际上被认为定义了 URI
如果 location 块使用了正则表达式定义路径,则 proxy_pass 指令不再使用 URI
如果在 location 块使用 rewrite 指令重写了 URI,那么 nginx 服务器则使用重写后的 URI 处理请求,而忽略 proxy_pass 中指定的 URI
2,proxy 模块的其它指令
(1),proxy_connect_time time; 和后端服务器建立链接的超时时间
(2),proxy_cookie_domain domain replacement;
设置 "Set-Cookie" 响应头中 domain 属性的替代文本,如,proxy_cookie_domain localhost example.org;
注:浏览器对 cookie 有比较多的限制,如果 cookie 的 domain 属性和当前页面的 domain 不匹配则就无法写入。所以,如果请求 A 域名,服务器 proxy_pass 至
B 域名,然后 B 服务器输出 domain=B 的 cookie,前端的页面依然停留在 A 域名上,于是浏览器就无法将 cookie 写入
(3),proxy_set_header field value;
重新定义或添加发往后端真实服务器的请求头,value 可以包含文本、变量或它们的组合
默认情况下有两个请求头会被重新定义:
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Host 的含义是表明请求的主机名,因为 nginx 作为反向代理,而如果后端真实的服务器设置有类似防盗链或根据 http 请求头中的 host 字段进行路由或判断功能的话,
如果 nginx 作为反向代理层不重写请求头中的 host 字段,将会导致请求失败,默认情况下反向代理服务器会向后端真实服务器发送请求,并且请求头中的 host 字段应为 proxy_pass
指令设置的服务器
下面看一下 X-Forwarded-For、X-Real-IP、remote_addr 这三者之间的区别
nginx 反向代理配置(二)的更多相关文章
- nginx反向代理配置两个不同服务器
1.什么是反向代理通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Inter ...
- nginx反向代理配置及优化
nginx反向代理配置及优化前言: 由于服务器apache抗不住目前的并发.加上前端squid配置后,问题依然无法解决.而页面程序大部分是动态.无法使用fastcgi来处理.因此想使用nginx做为反 ...
- nginx反向代理配置实例分享
nginx反向代理配置一例. 配置内容如下: user www www; worker_processes 8; error_log /usr/local/webserver/nginx/logs/n ...
- nginx之旅(第三篇):代理、正向代理、反向代理、代理的原理、nginx反向代理场景、nginx反向代理配置、nginx反向代理语法
一.代理服务与反向代理 什么是代理服务 代理-代理办理(代理理财.代理收货.代理购物等等). 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术.关于正向代理的概念如下: 正向代理(forw ...
- 使用python自动生成docker nginx反向代理配置
由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...
- Nginx反向代理配置可跨域
由于业务需要,同一项目中的前端代码放在静态环境中,而后端代码放在tomcat中,但此时问题却出现了:前端使用ajax请求后端获取数据时出现如下报错 XMLHttpRequest cannot load ...
- Nginx反向代理配置配置实例
为了节省支出,公司需要将分布在不同机器的站点都迁移到一台机器,而目前不同机器运行的是不同的web服务,部分是nginx,部分是apache,由于牵涉较多rewrite规则,为了节省修改功夫,打算迁移后 ...
- Linux 下的 Nginx 反向代理配置.
最近实践中遇到了需要利用 nginx 进行反向代理服务器请求的需求,以前没怎么碰触过,因此花了1个多小时,快速阅览了一下nginx官网在反向代理服务中给出的基本定义: 说实话,官网给予的定义是精准的, ...
- nginx反向代理配置
最近在项目中使用nginx反向代理,根据不同的请求路径,将请求分发到不同服务.下面的示例主要完成如下功能 /prod/路径的请求分发到prod服务 /test/路径的请求分发到test服务 创建文件夹 ...
随机推荐
- 001-guava概述
一.概述 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] .缓存 [caching] .原生类型支持 [primitives supp ...
- Locust-参数化批量注册(还没试,目测试可以的)
前言 实现场景:所有并发虚拟用户共享同一份测试数据,并且保证虚拟用户使用的数据不重复.例如,模拟10用户并发注册账号,总共有100个手机号,要求注册账号不重复,注册完毕后结束测试 准备数据 虚拟用户 ...
- 一行命令学会全基因组关联分析(GWAS)的meta分析
为什么需要做meta分析 群体分层是GWAS研究中一个比较常见的假阳性来源. 也就是说,如果数据存在群体分层,却不加以控制,那么很容易得到一堆假阳性位点. 当群体出现分层时,常规手段就是将分层的群体独 ...
- Cas(08)——单点登出
单点登出 目录 1.1 Cas Client端配置单点登出 1.2 Cas Server端禁用单点登出 1.1 Cas Client端配置单点登出 单点登出功能跟单点登录功能是 ...
- TS - 问题解决力 - 上篇
本文是已读书籍的内容摘要,少部分有轻微改动,但不影响原文表达. <麦肯锡工作法 - 个人竞争力提升50%的7堂课> ISBN: 9787508644691 https://book.dou ...
- linux 大量time_wait的解决方法
通过调整内核参数解决vi /etc/sysctl.conf 编辑文件,加入以下内容:net.ipv4.tcp_syncookies = 1net.ipv4.tcp_tw_reuse = 1net.ip ...
- gluster设置日志级别
glusterd --log-level WARNING #将日志级别设定为warning gluster --log-level=ERROR volume status #查看日志级别的状态 glu ...
- python 爬虫实例(一)
一个简单的爬虫工程 环境: OS:Window10 python:3.7 安装一些库文件 pip install requests pip install beautifulsoup4 pip ins ...
- ATT&CK框架学习
ATT&CK模型 ATT&CK是分析攻击者行为(即TTPs)的威胁分析框架.ATT&CK框架核心就是以矩阵形式展现的TTPs,即Tactics, Techniques and ...
- LeetCode 142. 环形链表 II(Linked List Cycle II)
142. 环形链表 II 142. Linked List Cycle II 题目描述 给定一个链表,返回链表开始入环的第一个节点.如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整 ...