我有一个大致如下所示的设置(我试图尽可能地简化它):
端口 443 - nginx 侦听并转发到端口 80,配置看起来像这样
server {
listen 443 ssl;
location / {
proxy_pass http://127.0.0.1:80;
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 https;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header Host $host;
}
Run Code Online (Sandbox Code Playgroud)
端口 80 - Varnish(反向代理)将流量转发到端口 8080,除非缓存命中。
使用 fastcgi 为 PHP 设置端口 8080 nginx。我有一些常见的配置:
location ~ \.php$ {
...
include fastcgi_params;
}
Run Code Online (Sandbox Code Playgroud)
和 fastcgi_params 文件,看起来像这样
...
fastcgi_param HTTPS $https if_not_empty;
Run Code Online (Sandbox Code Playgroud)
我一直在尝试做的是创建一个设置,其中 nginx 在侦听端口 8080 时能够检测到它是否正在向 http 或 https 提供内容。它需要将此告诉 PHP,以便它可以使用正确的方案创建 URL。
我在想我应该在某个地方监听X-Forwarded-Proto
然后告诉 nginx https 已打开。我不知道如何/在哪里做某种 if 语句,或者这样的事情是否可能,或者如何告诉 …