gpt4 book ai didi

nginx - 代理时应该如何转发 HTTP 端口的值?

转载 作者:行者123 更新时间:2023-12-04 08:56:35 32 4
gpt4 key购买 nike

所以,我有一个 nginx 对 Rails 服务器进行反向代理。 rails 服务器有一个 oauth 登录名,它的库使用“X-Forwarded-Host”构建回调 URL。问题是当 nginx 正在监听 80 以外的端口时,回调 URL 的格式不正确。查看配置我意识到这是因为它从“X-Forwarded-Host”构建 URL,而我使用的配置中没有包含端口。我已将我的配置修改为以下内容以使其工作:

server {
listen 8081;
server_name app;

location / {
proxy_pass http://app;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host:8081;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
}
}

我的问题是,“X-Forwarded-Host”实际上定义为什么? Nginx 将 'Http-Host' 视为主机 + 端口,但我在网上发现有时 X-Forwarded-Host 仅被视为主机,并且似乎有一个名为 'X-Forwarded-Port' 的变量有时会使用它,但我在 nginx 文档中找不到任何关于它的内容,只是有一个变量可用于在名为“代理端口”的日志中打印,但这是转发到的端口,而不是它的端口接受了连接(这对我来说没什么,因为我使用的是 unix 套接字)。什么是正确的解决方案? Nginx 不允许我手动使用 X-Forwarded-Port header ,我什至不确定我应该这样做。环顾网络,其他 http 服务器似乎对此有不同的处理方式,例如:
  • https://github.com/nodejitsu/node-http-proxy/issues/341
  • http://mattrobenolt.com/handle-x-forwarded-port-header-in-django/

  • 一些相关链接:
  • 有人断言Http-Host的定义:
    http://ask.wireshark.org/questions/22988/http-host-header-with-and-without-port-number
  • 有人说这些标题没有标准:
    What is a full specification of X-Forwarded-Proto HTTP header?
  • 一个未答复的相关堆栈溢出:
    https://serverfault.com/questions/536576/nginx-how-do-i-forward-a-http-request-to-another-port
  • 最佳答案

    My question is, what is 'X-Forwarded-Host' actually defined as?



    它没有定义,这就是为什么事情如此不一致。我已经看到单独指定的端口并作为主机的一部分。对于它的值(value),与主机指定它似乎很常见。

    关于nginx - 代理时应该如何转发 HTTP 端口的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21195220/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com