小编goo*_*orp的帖子

Nginx - 如何在反向代理后面为 PHP 启用 ssl

我有一个大致如下所示的设置(我试图尽可能地简化它):

端口 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 语句,或者这样的事情是否可能,或者如何告诉 …

ssl nginx reverse-proxy

5
推荐指数
1
解决办法
6890
查看次数

标签 统计

nginx ×1

reverse-proxy ×1

ssl ×1