如何仅使用 nginx 反向代理 php 文件?

如何仅使用 nginx 反向代理 php 文件?

目前我的 nginx 配置文件中有以下内容:

    server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {

    listen 443;
    server_name envy.zone;

    ssl_certificate           /etc/nginx/cert.crt;
    ssl_certificate_key       /etc/nginx/cert.key;
    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;
    ssl_client_certificate /etc/nginx/cloudflare.crt;
    ssl_verify_client on;

   location /
{

      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_pass          https://localhost:8081;
      proxy_read_timeout  90;
      proxy_redirect      http://localhost:8080 https://envy.zone;
    }
  }

根据我当前的配置,nginx 配置为将每个 http 和 https 请求发送到 apache2。我只希望 php 文件反向代理到 apache2,并将请求的请求留给 nginx(例如 *.png 可以由 nginx 很好地处理)。我该怎么做?

答案1

首先,不确定为什么需要 nginx 后面的 apache。

现在,如果你不在 Apache 中进行重写来隐藏 PHP 扩展,只需像这样修改您的位置块:

location ~ \.php$ {
    proxy_set_header       Host $host;
    proxy_set_header       X-Real-IP  $remote_addr;
    proxy_set_header       X-Forwarded-Proto $scheme;
    X-Forwarded-For        $proxy_add_x_forwarded_for;

    proxy_pass             https://localhost:8081;
    proxy_read_timeout     90;
    proxy_redirect         http://localhost:8080 https://envy.zone;
}

你就可以出发了。

相关内容