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.html proxy_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;
}
}

Nginx反向代理其他使用方式的更多相关文章

  1. Nginx反向代理的工作方式

    如图所示: 当客户端发来HTTP请求时,Nginx并不会立刻转发到上游服务器,而是先把用户的请求(包括HTTP包体)完整地接收到Nginx所在服务器的硬盘或者内存中,然后再向上游服务器发起连接,把缓存 ...

  2. Nginx反向代理+负载均衡简单实现(http方式)

    1)nginx的反向代理:proxy_pass2)nginx的负载均衡:upstream 下面是nginx的反向代理和负载均衡的实例: 负载机:A机器:103.110.186.8/192.168.1. ...

  3. IIS tomcat共用80端口解决一个IP多个域名:使用Nginx反向代理方式使两者兼容

    环境: windows server 2003,IIS6服务器,Tomcat7服务器 域名有几个: 以下是使用IIS的域名: http://www.formuch.com/ http://www.fo ...

  4. (转)IIS tomcat共用80端口解决一个IP多个域名:使用Nginx反向代理方式使两者兼容

    from :http://www.cnblogs.com/wuyou/p/3455619.html 环境: windows server 2003,IIS6服务器,Tomcat7服务器 域名有几个: ...

  5. 前端跨域实现的几种方式?及使用Nginx反向代理配置。

    早期为了防止CSRF(跨域请求伪造)的攻击,浏览器引入了同源策略(SOP)来提高安全性.而所谓"同源策略",即同域名(domain或ip).同端口.同协议的才能互相获取资源,而不能 ...

  6. Nginx反向代理+负载均衡简单实现(https方式)

    背景:A服务器(192.168.1.8)作为nginx代理服务器B服务器(192.168.1.150)作为后端真实服务器 现在需要访问https://testwww.huanqiu.com请求时从A服 ...

  7. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...

  8. Nginx反向代理部署指南

    一.反向代理 我们都知道,80端口是web服务的默认端口,其他主机访问web服务器也是默认和80端口进行web交互,而一台服务器也只有一个80端口,这是约定俗成的标准. 我们来看下面两个场景: 1.服 ...

  9. Nginx反向代理和负载均衡

    一.Nginx反向代理设置 从80端口转向其他端口反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的 ...

随机推荐

  1. httprunner学习25-文件上传multipart/form-data

    前言 httprunner上传文件接口,其实跟requests上传文件的接口是一样的,之前在python接口系列里面有案例 python接口自动化16-multipart/form-data上传图片 ...

  2. qr.h

    创建二维码 QRCodeCreate vc++

  3. 百度快排发包python核心源码

    本源码仅供测试,发包有风险,优化还是踏实的好!本代码是本人自己学习python练手作品!  附上代码: # -*- coding: utf-8 -*-from selenium import webd ...

  4. opencart中文版checkout设置city和county为非必选

    opencart中文版在opencart原版进行了一些修改,添加了适合国内使用的设置,但是并不适合国外用户,比如订单页面的收货地址添加了国内的城市和区县,而国外的city和county被删减了,这两项 ...

  5. python基础之四:list、tuple

    一.列表 list # 列表 ''' 类似str,可以进行切片 ''' li = [', [1, 2, 3], 55, 'we all in ', 'Tom', ''] print(li[0:2]) ...

  6. 原生PHP+原生ajax批量删除(超简单),ajax删除,ajax即点即改,完整代码,完整实例

    效果图: 建表:company DROP TABLE IF EXISTS `company`;CREATE TABLE `company` ( `id` int(11) NOT NULL AUTO_I ...

  7. ABP 报错 System.InvalidOperationException: 实例失败。

    错误:System.InvalidOperationException: 实例失败. 解决:数据库链接写错了,斜杠的问题 core:两根斜杠 .net framework:一根斜杠 core的写法: ...

  8. [RN] React Native 中使用 stickyHeaderIndices 实现 ScrollView 的吸顶效果

    React Native中,ScrollView组件可以使用 stickyHeaderIndices 轻松实现 sticky 效果. 例如下面代码中: <ScrollView showsVert ...

  9. idea 2018.1 创建springboot开启找回Run Dashboard

    Run Dashboard 他是一个代替Run窗口的一个更好清晰简介的一个启动器.一般我们需要启动多个窗口时,Run窗口不能让我们直观的看到我们看到每一个端口的变化. 我们可以对比一下这个是Run D ...

  10. 通过rpm安装crontab

    可以在对应的虚拟机centos上查看 所安装的crontab安装信息,然后选中rpm包进行安装,命令:rpm -qa |grep cron 如: 如没有上述信息,表名没有安装,也可以直接用cronta ...