Apache 的 Nginx SSL 代理

Apache 的 Nginx SSL 代理

我正在运行以下设置:

[公共 IP]-nginx_proxy-[lan]-apache_server

SSL 在 nginx 代理级别上配置并设置(并且正在运行)。

但是,当我通过 SSL 访问网站时,我会通过 http 返回 .css 和 .js 文件(这些文件被浏览器阻止)。Apache 似乎不知道客户端正在通过 SSL 请求内容。

这是我当前的配置:

nginx的:

server {
    listen              443;
    server_name         maiev.domain.com, ~.;

    ssl             on;
    ssl_certificate         /etc/nginx/ssl/domain.pem;
    ssl_certificate_key     /etc/nginx/ssl/domain.pem;

    access_log          off;
    error_log           off;

    location ~ /\.ht {
        deny all;
    }

    location ~ /\.git {
                deny all;
        }

    location / {
        proxy_pass      http://maiev.local:80;
            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;
            add_header              Front-End-Https on;
            proxy_redirect          off;
    }
}

这是我的 Apache 配置:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName dev.domain.com

    <IfModule rpaf_module>
        RPAFenable On
        RPAFsethostname On
        RPAFproxy_ips 172.16.1.130
        RPAFheader X-Forwarded-For
    </IfModule>

    DocumentRoot /home/sites/www/dev-domain/public 

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory /home/sites/www/dev-domain/public/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog /home/sites/logs/dev-domain/error.log
    LogLevel warn
    CustomLog /home/sites/logs/dev-domain/access.log combined
    php_value log_errors on
    php_value error_log /home/sites/logs/dev-domain/php.log
</VirtualHost>

如果我在 nginx 配置中将 $scheme 更改为 https,则什么都不会改变。

我错过了什么?

答案1

如果您在 html 文件中将 URL 设置为“http://...”,它将被用作 http,而不会神奇地转换为 https,因为 referrer 使用的是 https。因此,您可能需要修复您的应用程序,而不是您的 Web 服务器。

相关内容