反向代理

时间:2017-10-31 15:30:35

标签: php symfony redirect proxy

我有一个使用FosUserBundle的Symfony 3.2应用程序(在端口8443上运行)。当匿名用户访问“https://[myurl].com:8443”时,系统会将其重定向到“https://[myurl].com:8443/login”以进行登录。这种重定向在访问应用程序时工作正常但现在,我们希望使用反向代理将客户的请求转发给应用程序。客户将使用标准的https端口443。

以下情况:用户使用“https://myurl.com”访问该应用程序 请求由反向代理转发到在端口8443上托管应用程序的Web服务器(IIS) 发出请求的用户被重定向到“https://myurl.com:8443/login”,这不起作用,因为8443仅在服务器端打开。

我在symfony中尝试了不同的解决方案但是无法使其工作:
- 设置symfony中的反向代理:Request::setTrustedProxies(array('123.456.78.89'));
-set http_port/https_port in config.yml
-set $_SERVER['SERVER_PORT'] = 443;

关于如何解决这个问题的任何想法?

由于

2 个答案:

答案 0 :(得分:0)

打开以下文件:

web/app.php

在这一行之后:

$request = Request::createFromGlobals();

插入此块:

// tell Symfony about your reverse proxy
Request::setTrustedProxies(
    // the IP address (or range) of your proxy
    ['192.0.0.1', '10.0.0.0/8'],

    // trust *all* "X-Forwarded-*" headers
    Request::HEADER_X_FORWARDED_ALL

    // or, if your proxy instead uses the "Forwarded" header
    // Request::HEADER_FORWARDED

    // or, if you're using AWS ELB
    // Request::HEADER_X_FORWARDED_AWS_ELB
);

查看:

"如何将Symfony配置为在负载均衡器或反向代理后面工作" http://symfony.com/doc/3.4/deployment/proxies.html

答案 1 :(得分:0)

除了@Gor之外,我认为您还应该配置代理以添加X-Forwarded标头。在Nginx中类似

location / {
    proxy_pass              http://myurl:8443;
    proxy_set_header        Host $host;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header        X-Forwarded-Proto $scheme;
    proxy_set_header        X-Forwarded-Port $server_port;
  }