Nginx   发布时间:2022-05-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了nginx – 代理时如何转发HTTP端口的值?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

所以,我有一个Nginx反向代理到rails服务器. rails服务器具有oauth登录,并且执行它的lib使用“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文档中找不到任何关于它的东西,除了在日志中有一个可用于打印的变量称为’proxy-port’,但这是转发到的端口,而不是它接受的端口连接(对我来说没什么,因为我使用的是unix套接字).什么是正确的解决方案? Nginx不允许我手动使用X-ForWARDed-Port标头,我甚至不确定是否应该这样做.看看网络,似乎其他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

服务器“app”在端口8081上有Nginx,在80上有rails.

这会将所有请求映射到http:// app:80,并将响应标题“LOCATIOn”从http:// app:80更改为http:// app:8081.

server {
    listen 8081;
    server_name app;

    LOCATIOn / {
        proxy_pass http://app:80;
        proxy_redirect http://app/ http://app:8081/;
        proxy_redirect http://app:80/ http://app:8081/;
    }
}

大佬总结

以上是大佬教程为你收集整理的nginx – 代理时如何转发HTTP端口的值?全部内容,希望文章能够帮你解决nginx – 代理时如何转发HTTP端口的值?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:所以