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 了解详情。
我是 运行 我树莓派上的一个小型 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 了解详情。