[Nginx]02 - 更改请求头的参数

目录

  1. 观察请求头参数Host的变化
  2. 修正host参数

0. 概述

  1. 请求头参数host为向谁发出请求,例如我们访问百度的首页,那么Host就是www.baidu.com/
  2. nginx相当于把浏览器中发送的请求,转发给相应的服务端。

1. 观察请求头参数Host的变化

  • 搭建服务端

在终端输出请求头参数Host

/**
 * node.js创建服务端的基础
 */

const http = require('http')
const port = 9000

http.createServer(function(request, response) {
  // 在终端输出请求头参数Host
  console.log(request.headers['host'])
  response.end('666')
}).listen(port)

console.log(`listen ${port}`)
  • 配置nginx

转发到node服务端

server {
    listen 80;
    server_name test.com;

    location / {
        proxy_pass http://localhost:9000;
    }
}
  • 测试

输入test.com

  1. 浏览器中的Host为test.com
    [Nginx]02 - 更改请求头的参数_第1张图片
  2. node终端的Host为localhost:9000

    出现这个的原因就是nginx转发请求时更改的原来的请求头,这并不是一个bug,而是http协议中host就是代表向谁请求,因此在nginx中发出的请求默认情况下就是配置的proxy_pass

2. 修正host参数

$host为nginx提供的变量,这里我们手动设置了nginx的请求头。

server {
    listen 80;
    server_name test.com;

    location / {
        proxy_pass http://localhost:9000;
        proxy_set_header Host $host;
    }
}

现在再去请求test.com终端也显示test.com了。

你可能感兴趣的:([Nginx]02 - 更改请求头的参数)