我正在运行以下设置:
[公共 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 服务器。