美文网首页
[Nginx]02 - 更改请求头的参数

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

作者: dyq666 | 来源:发表于2018-07-22 02:40 被阅读0次

    目录

    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
    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 - 更改请求头的参数

          本文链接:https://www.haomeiwen.com/subject/edbkmftx.html