Nginx反向代理其他使用方式
Nginx反向代理在生产环境中使用很多的。场景1:
域名没有备案,可以把域名解析到香港一台云主机上,在香港云主机做个代理,而网站数据是在大陆的服务器上。示例1:
server
{listen 80;server_name oldxu.com;location /{proxy_pass http://123.23.13.11/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
配置说明
1. proxy_pass
在正向代理中,已经使用过该指令。
格式很简单: proxy_pass URL;
其中URL包含:传输协议(http://, https://等)、主机名(域名或者IP:PORT)、uri。示例如下:
proxy_pass http://www.oldxu.com/;
proxy_pass http://192.168.200.101:8080/uri;
proxy_pass unix:/tmp/www.sock;对于proxy_pass的配置有几种情况需要注意。
示例2:
location /oldxu/
{proxy_pass http://192.168.1.10;...
}示例3:
location /oldxu/
{proxy_pass http://192.168.1.10/;...
}示例4:
location /oldxu/
{proxy_pass http://192.168.1.10/linux/;...
}示例5:
location /oldxu/
{proxy_pass http://192.168.1.10/linux;...
}假设server_name为www.oldxu.com
当请求http://www.oldxu.com/oldxu/a.html的时候,以上示例2-5分别访问的结果是示例2:http://192.168.1.10/oldxu/a.html示例3:http://192.168.1.10/a.html示例4:http://192.168.1.10/linux/a.html示例5:http://192.168.1.10/linuxa.html
2. proxy_set_header
proxy_set_header用来设定被代理服务器接收到的header信息。语法:proxy_set_header field value;
field为要更改的项目,也可以理解为变量的名字,比如host
value为变量的值如果不设置proxy_set_header,则默认host的值为proxy_pass后面跟的那个域名或者IP(一般写IP),
比如示例4,请求到后端的服务器上时,完整请求uri为:http://192.168.1.10/linux/a.html如果设置proxy_set_header,如 proxy_set_header host $host;
比如示例4,请求到后端的服务器完整uri为:http://www.oldxu.com/linux/a.htmlproxy_set_header X-Real-IP $remote_addr;和proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
用来设置被代理端接收到的远程客户端IP,如果不设置,则header信息中并不会透传远程真实客户端的IP地址。
可以用如下示例来测试:示例6(被代理端)
server{listen 8080;server_name www.oldxu.com;root /tmp/123.com_8080;index index.html;location /linux/ {echo "$host";echo $remote_addr;echo $proxy_add_x_forwarded_for;}
}示例7(代理服务器上)
server {listen 80;server_name www.oldxu.com;location /oldxu/{proxy_pass http://192.168.1.10:8080/linux/;proxy_set_header host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
3. proxy_redirect
该指令用来修改被代理服务器返回的响应头中的Location头域和“refresh”头域。
语法结构为:
proxy_redirect redirect replacement;
proxy_redirect default;
proxy_redirect off;示例8:
server {listen 80;server_name www.oldxu.com;index index.html;location /{proxy_pass http://127.0.0.1:8080;proxy_set_header host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}当请求的链接为 http://www.oldxu.com/oldxu
结果会返回301,定向到了 http://www.oldxu.com:8080/oldxu/注意:返回301有几个先决条件
1. location后面必须是/;
2. proxy_pass后面的URL不能加uri,只能是IP或者IP:port结尾,并不能以/结尾;
3. 访问的uri必须是一个真实存在的目录,如,这里的oldxu必须是存在的
4. 访问的时候,不能以/结尾,只能是 www.oldxu.com/oldxu虽然,这4个条件挺苛刻,但确实会遇到类似的请求。解决方法是,加一行proxy_redirect http://$host:8080/ /;示例9:
server {listen 80;server_name www.oldxu.com;index index.html;location /{proxy_pass http://127.0.0.1:8080;proxy_set_header host $host;proxy_redirect http://$host:8080/ /;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
转载于:https://www.cnblogs.com/xuliangwei/p/11568316.html
Nginx反向代理其他使用方式相关推荐
- nginx反向代理以及nginx反向代理三种方式
nginx反向代理的三种模式分别是: 一.正向代理(Forward Proxy) 二.反向代理(reverse proxy) 三.透明代理 Nginx性能很高的,尤其是作为一个代理服务器,因为它用的是 ...
- (转)IIS tomcat共用80端口解决一个IP多个域名:使用Nginx反向代理方式使两者兼容...
from :http://www.cnblogs.com/wuyou/p/3455619.html 环境: windows server 2003,IIS6服务器,Tomcat7服务器 域名有几个: ...
- Nginx反向代理的两种配置方式
一.nginx反向代理简单配置 1.准备nginx环境 这篇文章的前提是已经配置好了NGINX,而且tomcat已经配置好了,而且能能够访问了. 反向代理不同端口(本案例均是单节点) 这里介绍一台ng ...
- nginx反向代理原理及配置详解
nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...
- nginx反向代理原理讲解
一 .概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器:并将从服务器上得到的结果 ...
- 懂点 Nginx 反向代理与负载均衡,是面试加分项没有之一
点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等 ...
- nginx反向代理,负载均衡
nginx 反向代理(Reverse Proxy)是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户 ...
- Nginx反向代理以及负载均衡配置
一 .nginx 的优缺点: nginx 相对 apache 的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则 ...
- 配置nginx反向代理jira并实现https
摘要: 配置nginx反向代理jira并实现https 配置Tomcat 在本文中,我们设置可以在地址http://jira.aniu.so/jira(标准HTTP端口80)上访问JIRA,而JIRA ...
最新文章
- c++ memset 语言_自学C语言不知道从哪儿下手?学习框架都帮你列好了!
- 基础 PHP 数据类型
- 操作系统 chapter 12 死锁
- 修改Thickbox,预加载图片和点击图片前后浏览
- 圆方圆学院零基础入门学习Python(绝对干货,值得学习)
- 为什么叫日上_古雷150万吨乙烯,为啥叫芒果项目?
- 信用卡使用十年的心得体会(图)
- php连接mysql的方式_php有几种连接mysql的方法
- mysql启动失败2005_数据库2005服务启动不了
- fs hadoop 压缩_Hadoop 压缩图文教程
- html图片多tab切换代码,CSS实现Tab页切换实例代码
- 设计总结:进销存业务流程设计
- 连这些题都不会做好意思说自己懂网络?
- Chrome屏蔽广告
- 【精华帖】PS拼接图片最简单教程
- 没有这个路径C:\Program Files\Microsoft Office\root\Office16怎么办
- 让你的 CDN 费用省 50% 以上!图片瘦身的正确姿势
- STM32学习总结——UART
- 金海佳学C++primer 练习9.44
- GSM MODEN短信发送模块详解(短信的读取、发送过程和编码、解码过程)