Nginx,proxy_pass 和 fastcgi/php

Nginx, proxy_pass and fastcgi/php

我是 运行 我树莓派上的一个小型 nginx 实例。到目前为止,这工作正常。它正在使用 SSL 和 PHP,并且如预期的那样 运行。现在我计划使用 proxy_pass.

将对 /photo 的请求转发到我的本地磁盘站

树莓派IP为192.168.178.3,diskstation为192.168.178.2。直接访问diskstation就可以了

nginx 配置:

server {
  ...
  location / {
    root /var/www;
  }
  location /photo {
    #rewrite ^ $scheme://$host/;
    proxy_pass http://192.168.178.2$uri;
  } 
  location ~ ^(?<script_name>.+?\.php)(?<path_info>/.*)?$ {
    try_files $script_name =404;
    include fastcgi_params;
    fastcgi_param PATH_INFO $path_info;
    fastcgi_param HTTPS on;
    fastcgi_read_timeout 3600s;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
  }
}

不幸的是,nginx 处理所有 *.php 请求,但是对 php 文件的请求应该使用 proxy_pass 设置转发到 diskstation。

例如,http://192.168.178.3/photo/scripts/uistrings.php?v=6.2-2858&ln=ger returns 一个 404 但在直接发送到 diskstation 时按预期工作。对于所有其他文件,如 PNG 或 CSS,proxy_pass 工作正常。

如何解决 php 文件问题?

location ^~ /photo {
    ....
}

这应该有效。阅读 http://nginx.org/r/location 了解详情。