首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代理时应如何转发HTTP端口的值?

代理时应如何转发HTTP端口的值?
EN

Stack Overflow用户
提问于 2014-01-17 20:25:30
回答 2查看 11.9K关注 0票数 9

因此,我有一个nginx向rails服务器进行反向代理。rails服务器有一个oauth登录名,它的库使用‘X转发-主机’构建回调URL。问题是,当nginx侦听80以外的端口时,回调URL没有被正确格式化。在查看配置时,我意识到这是因为它从‘X转发主机’构建了URL,而我使用的配置没有包含其中的端口。我已将我的配置修改为:

代码语言:javascript
复制
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转发-主机”实际上定义为什么?nginx将'Http- host‘作为主机+端口,但我在网络周围发现,有时X转发主机只将主机视为主机,似乎有一个名为’X转发-端口‘的变量有时会被使用,但我无法在Nginx文档中找到关于它的任何内容,只是在名为'proxy- port’的日志中有一个可打印的变量,但这是被转发到的端口,而不是它接受连接的端口(对我来说,这不是什么,因为我使用的是unix套接字)。正确的解决办法是什么?Nginx不允许我手动使用X转发端口头,我甚至不确定我是否应该。环顾整个网络,其他http服务器似乎对此有不同的处理方式,例如:

一些相关链接:

EN

回答 2

Stack Overflow用户

发布于 2020-04-25 18:19:10

我只是有个类似的问题。我认为一个常见的方法是指定X-Forwarded-Host头中的端口,正如Daniel在他的回答中所建议的那样。

我还看到,有时使用“非官方”X-Forwarded-Port头。

我创建了一个similar question,在这里我总结了我认为服务器应该如何运行--所有可能的组合(也可以使用X-Forwarded-Proto,我认为它也会产生影响)。

票数 2
EN

Stack Overflow用户

发布于 2014-01-18 02:43:29

服务器"app“在端口8081上有nginx,在80上有rails。

这会将所有请求映射到http://app:80,并将响应头“位置”从http://app:80更改为http://app:8081

代码语言:javascript
复制
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/;
    }
}
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21195220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档