如何解决NginX和PHP-FPM,如何传递代理路径名而不是真实的?
我在/ ugly / path / for / php / assets /下有一些PHP页面,但是用户通常从漂亮的 ad hoc 位置访问它们。
例如,https://example.com/signup是https://example.com/ugly/path/for/php/assets/signup.php的代理。
有没有一种方法可以将Nginx中的“ / signup”传递到PHP-FPM,并在发送表单时避免URL重定向?
发生以下情况时会发生这种情况,因为变量$_SERVER['PHP_SELF']
的值,用户单击https://example.com/signup的提交,然后读取https://example.com/ugly/path/for/php/assets/signup.php的答复。
echo "<form method=\"post\" action=\"".htmlspecialchars($_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'],ENT_QUOTES)."\" enctype=\"multipart/form-data\">
[...]
"
// What variable returns
// $_SERVER['REQUEST_URI'] = "/ugly/path/for/php/assets/signup"
// $_SERVER['PHP_SELF'] = "/ugly/path/for/php/assets/signup.php"
// basename(__FILE__) = "signup.php"
这是实际的Nginx配置:
location /signup {
proxy_pass https://example.com/ugly/path/for/php/assets/signup;
}
location /ugly/path/for/php/assets {
try_files $uri $uri.php =404;
include fastcgi.conf;
set_real_ip_from 127.0.0.1;
real_ip_header X-Real-IP;
fastcgi_intercept_errors on;
fastcgi_param SERVER_NAME $host;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。